Home | History | Annotate | Download | only in vulkan
      1 // 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 
     73 static_assert( VK_HEADER_VERSION ==  92 , "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 
    137 namespace 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 
    483   template <typename X, typename Y> struct isStructureChainValid { enum { value = false }; };
    484 
    485   template <typename P, typename T>
    486   struct TypeList
    487   {
    488     using list = P;
    489     using last = T;
    490   };
    491 
    492   template <typename List, typename X>
    493   struct extendCheck
    494   {
    495     static const bool valid = isStructureChainValid<typename List::last, X>::value || extendCheck<typename List::list,X>::valid;
    496   };
    497 
    498   template <typename T, typename X>
    499   struct extendCheck<TypeList<void,T>,X>
    500   {
    501     static const bool valid = isStructureChainValid<T, X>::value;
    502   };
    503 
    504   template <typename X>
    505   struct extendCheck<void,X>
    506   {
    507     static const bool valid = true;
    508   };
    509 
    510   template <class Element>
    511   class StructureChainElement
    512   {
    513   public:
    514     explicit operator Element&() { return value; }
    515     explicit operator const Element&() const { return value; }
    516   private:
    517     Element value;
    518   };
    519 
    520   template<typename ...StructureElements>
    521   class StructureChain : private StructureChainElement<StructureElements>...
    522   {
    523   public:
    524     StructureChain()
    525     {
    526       link<void, StructureElements...>();
    527     }
    528 
    529     StructureChain(StructureChain const &rhs)
    530     {
    531       linkAndCopy<void, StructureElements...>(rhs);
    532     }
    533 
    534     StructureChain(StructureElements const &... elems)
    535     {
    536       linkAndCopyElements<void, StructureElements...>(elems...);
    537     }
    538 
    539     StructureChain& operator=(StructureChain const &rhs)
    540     {
    541       linkAndCopy<void, StructureElements...>(rhs);
    542       return *this;
    543     }
    544 
    545     template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
    546 
    547   private:
    548     template<typename List, typename X>
    549     void link()
    550     {
    551       static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
    552     }
    553 
    554     template<typename List, typename X, typename Y, typename ...Z>
    555     void link()
    556     {
    557       static_assert(extendCheck<List,X>::valid, "The structure chain is not valid!");
    558       X& x = static_cast<X&>(*this);
    559       Y& y = static_cast<Y&>(*this);
    560       x.pNext = &y;
    561       link<TypeList<List, X>, Y, Z...>();
    562     }
    563 
    564     template<typename List, typename X>
    565     void linkAndCopy(StructureChain const &rhs)
    566     {
    567       static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
    568       static_cast<X&>(*this) = static_cast<X const &>(rhs);
    569     }
    570 
    571     template<typename List, typename X, typename Y, typename ...Z>
    572     void linkAndCopy(StructureChain const &rhs)
    573     {
    574       static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
    575       X& x = static_cast<X&>(*this);
    576       Y& y = static_cast<Y&>(*this);
    577       x = static_cast<X const &>(rhs);
    578       x.pNext = &y;
    579       linkAndCopy<TypeList<List, X>, Y, Z...>(rhs);
    580     }
    581 
    582     template<typename List, typename X>
    583     void linkAndCopyElements(X const &xelem)
    584     {
    585       static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
    586       static_cast<X&>(*this) = xelem;
    587     }
    588 
    589     template<typename List, typename X, typename Y, typename ...Z>
    590     void linkAndCopyElements(X const &xelem, Y const &yelem, Z const &... zelem)
    591     {
    592       static_assert(extendCheck<List, X>::valid, "The structure chain is not valid!");
    593       X& x = static_cast<X&>(*this);
    594       Y& y = static_cast<Y&>(*this);
    595       x = xelem;
    596       x.pNext = &y;
    597       linkAndCopyElements<TypeList<List, X>, Y, Z...>(yelem, zelem...);
    598     }
    599   };
    600 
    601   enum class Result
    602   {
    603     eSuccess = VK_SUCCESS,
    604     eNotReady = VK_NOT_READY,
    605     eTimeout = VK_TIMEOUT,
    606     eEventSet = VK_EVENT_SET,
    607     eEventReset = VK_EVENT_RESET,
    608     eIncomplete = VK_INCOMPLETE,
    609     eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
    610     eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
    611     eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
    612     eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
    613     eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
    614     eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
    615     eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
    616     eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
    617     eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
    618     eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
    619     eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
    620     eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
    621     eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY,
    622     eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY,
    623     eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE,
    624     eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
    625     eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
    626     eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
    627     eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
    628     eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
    629     eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
    630     eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
    631     eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
    632     eErrorInvalidDrmFormatModifierPlaneLayoutEXT = VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT,
    633     eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT,
    634     eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT
    635   };
    636 
    637   VULKAN_HPP_INLINE std::string to_string(Result value)
    638   {
    639     switch (value)
    640     {
    641     case Result::eSuccess: return "Success";
    642     case Result::eNotReady: return "NotReady";
    643     case Result::eTimeout: return "Timeout";
    644     case Result::eEventSet: return "EventSet";
    645     case Result::eEventReset: return "EventReset";
    646     case Result::eIncomplete: return "Incomplete";
    647     case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
    648     case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
    649     case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
    650     case Result::eErrorDeviceLost: return "ErrorDeviceLost";
    651     case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
    652     case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
    653     case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
    654     case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
    655     case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
    656     case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
    657     case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
    658     case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
    659     case Result::eErrorOutOfPoolMemory: return "ErrorOutOfPoolMemory";
    660     case Result::eErrorInvalidExternalHandle: return "ErrorInvalidExternalHandle";
    661     case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
    662     case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
    663     case Result::eSuboptimalKHR: return "SuboptimalKHR";
    664     case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
    665     case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
    666     case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
    667     case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
    668     case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: return "ErrorInvalidDrmFormatModifierPlaneLayoutEXT";
    669     case Result::eErrorFragmentationEXT: return "ErrorFragmentationEXT";
    670     case Result::eErrorNotPermittedEXT: return "ErrorNotPermittedEXT";
    671     default: return "invalid";
    672     }
    673   }
    674 
    675 #ifndef VULKAN_HPP_NO_EXCEPTIONS
    676 #if defined(_MSC_VER) && (_MSC_VER == 1800)
    677 # define noexcept _NOEXCEPT
    678 #endif
    679 
    680   class ErrorCategoryImpl : public std::error_category
    681   {
    682     public:
    683     virtual const char* name() const noexcept override { return VULKAN_HPP_NAMESPACE_STRING"::Result"; }
    684     virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
    685   };
    686 
    687 #if defined(_MSC_VER) && (_MSC_VER == 1800)
    688 # undef noexcept
    689 #endif
    690 
    691   VULKAN_HPP_INLINE const std::error_category& errorCategory()
    692   {
    693     static ErrorCategoryImpl instance;
    694     return instance;
    695   }
    696 
    697   VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
    698   {
    699     return std::error_code(static_cast<int>(e), errorCategory());
    700   }
    701 
    702   VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
    703   {
    704     return std::error_condition(static_cast<int>(e), errorCategory());
    705   }
    706 
    707 #if defined(_MSC_VER) && (_MSC_VER == 1800)
    708 # define noexcept _NOEXCEPT
    709 #endif
    710 
    711   class Error
    712   {
    713     public:
    714     virtual ~Error() = default;
    715 
    716     virtual const char* what() const noexcept = 0;
    717   };
    718 
    719   class LogicError : public Error, public std::logic_error
    720   {
    721     public:
    722     explicit LogicError( const std::string& what )
    723       : Error(), std::logic_error(what) {}
    724     explicit LogicError( char const * what )
    725       : Error(), std::logic_error(what) {}
    726     virtual ~LogicError() = default;
    727 
    728     virtual const char* what() const noexcept { return std::logic_error::what(); }
    729   };
    730 
    731   class SystemError : public Error, public std::system_error
    732   {
    733     public:
    734     SystemError( std::error_code ec )
    735       : Error(), std::system_error(ec) {}
    736     SystemError( std::error_code ec, std::string const& what )
    737       : Error(), std::system_error(ec, what) {}
    738     SystemError( std::error_code ec, char const * what )
    739       : Error(), std::system_error(ec, what) {}
    740     SystemError( int ev, std::error_category const& ecat )
    741       : Error(), std::system_error(ev, ecat) {}
    742     SystemError( int ev, std::error_category const& ecat, std::string const& what)
    743       : Error(), std::system_error(ev, ecat, what) {}
    744     SystemError( int ev, std::error_category const& ecat, char const * what)
    745       : Error(), std::system_error(ev, ecat, what) {}
    746     virtual ~SystemError() = default;
    747 
    748     virtual const char* what() const noexcept { return std::system_error::what(); }
    749   };
    750 
    751 #if defined(_MSC_VER) && (_MSC_VER == 1800)
    752 # undef noexcept
    753 #endif
    754 
    755   class OutOfHostMemoryError : public SystemError
    756   {
    757   public:
    758     OutOfHostMemoryError( std::string const& message )
    759       : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
    760     OutOfHostMemoryError( char const * message )
    761       : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
    762   };
    763   class OutOfDeviceMemoryError : public SystemError
    764   {
    765   public:
    766     OutOfDeviceMemoryError( std::string const& message )
    767       : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
    768     OutOfDeviceMemoryError( char const * message )
    769       : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
    770   };
    771   class InitializationFailedError : public SystemError
    772   {
    773   public:
    774     InitializationFailedError( std::string const& message )
    775       : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
    776     InitializationFailedError( char const * message )
    777       : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
    778   };
    779   class DeviceLostError : public SystemError
    780   {
    781   public:
    782     DeviceLostError( std::string const& message )
    783       : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
    784     DeviceLostError( char const * message )
    785       : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
    786   };
    787   class MemoryMapFailedError : public SystemError
    788   {
    789   public:
    790     MemoryMapFailedError( std::string const& message )
    791       : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
    792     MemoryMapFailedError( char const * message )
    793       : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
    794   };
    795   class LayerNotPresentError : public SystemError
    796   {
    797   public:
    798     LayerNotPresentError( std::string const& message )
    799       : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
    800     LayerNotPresentError( char const * message )
    801       : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
    802   };
    803   class ExtensionNotPresentError : public SystemError
    804   {
    805   public:
    806     ExtensionNotPresentError( std::string const& message )
    807       : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
    808     ExtensionNotPresentError( char const * message )
    809       : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
    810   };
    811   class FeatureNotPresentError : public SystemError
    812   {
    813   public:
    814     FeatureNotPresentError( std::string const& message )
    815       : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
    816     FeatureNotPresentError( char const * message )
    817       : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
    818   };
    819   class IncompatibleDriverError : public SystemError
    820   {
    821   public:
    822     IncompatibleDriverError( std::string const& message )
    823       : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
    824     IncompatibleDriverError( char const * message )
    825       : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
    826   };
    827   class TooManyObjectsError : public SystemError
    828   {
    829   public:
    830     TooManyObjectsError( std::string const& message )
    831       : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
    832     TooManyObjectsError( char const * message )
    833       : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
    834   };
    835   class FormatNotSupportedError : public SystemError
    836   {
    837   public:
    838     FormatNotSupportedError( std::string const& message )
    839       : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
    840     FormatNotSupportedError( char const * message )
    841       : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
    842   };
    843   class FragmentedPoolError : public SystemError
    844   {
    845   public:
    846     FragmentedPoolError( std::string const& message )
    847       : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
    848     FragmentedPoolError( char const * message )
    849       : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
    850   };
    851   class OutOfPoolMemoryError : public SystemError
    852   {
    853   public:
    854     OutOfPoolMemoryError( std::string const& message )
    855       : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {}
    856     OutOfPoolMemoryError( char const * message )
    857       : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {}
    858   };
    859   class InvalidExternalHandleError : public SystemError
    860   {
    861   public:
    862     InvalidExternalHandleError( std::string const& message )
    863       : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {}
    864     InvalidExternalHandleError( char const * message )
    865       : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {}
    866   };
    867   class SurfaceLostKHRError : public SystemError
    868   {
    869   public:
    870     SurfaceLostKHRError( std::string const& message )
    871       : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
    872     SurfaceLostKHRError( char const * message )
    873       : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
    874   };
    875   class NativeWindowInUseKHRError : public SystemError
    876   {
    877   public:
    878     NativeWindowInUseKHRError( std::string const& message )
    879       : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
    880     NativeWindowInUseKHRError( char const * message )
    881       : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
    882   };
    883   class OutOfDateKHRError : public SystemError
    884   {
    885   public:
    886     OutOfDateKHRError( std::string const& message )
    887       : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
    888     OutOfDateKHRError( char const * message )
    889       : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
    890   };
    891   class IncompatibleDisplayKHRError : public SystemError
    892   {
    893   public:
    894     IncompatibleDisplayKHRError( std::string const& message )
    895       : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
    896     IncompatibleDisplayKHRError( char const * message )
    897       : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
    898   };
    899   class ValidationFailedEXTError : public SystemError
    900   {
    901   public:
    902     ValidationFailedEXTError( std::string const& message )
    903       : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
    904     ValidationFailedEXTError( char const * message )
    905       : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
    906   };
    907   class InvalidShaderNVError : public SystemError
    908   {
    909   public:
    910     InvalidShaderNVError( std::string const& message )
    911       : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
    912     InvalidShaderNVError( char const * message )
    913       : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
    914   };
    915   class InvalidDrmFormatModifierPlaneLayoutEXTError : public SystemError
    916   {
    917   public:
    918     InvalidDrmFormatModifierPlaneLayoutEXTError( std::string const& message )
    919       : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) {}
    920     InvalidDrmFormatModifierPlaneLayoutEXTError( char const * message )
    921       : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) {}
    922   };
    923   class FragmentationEXTError : public SystemError
    924   {
    925   public:
    926     FragmentationEXTError( std::string const& message )
    927       : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {}
    928     FragmentationEXTError( char const * message )
    929       : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {}
    930   };
    931   class NotPermittedEXTError : public SystemError
    932   {
    933   public:
    934     NotPermittedEXTError( std::string const& message )
    935       : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
    936     NotPermittedEXTError( char const * message )
    937       : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
    938   };
    939 
    940   VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
    941   {
    942     switch ( result )
    943     {
    944     case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
    945     case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
    946     case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
    947     case Result::eErrorDeviceLost: throw DeviceLostError ( message );
    948     case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
    949     case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
    950     case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
    951     case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
    952     case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
    953     case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
    954     case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
    955     case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
    956     case Result::eErrorOutOfPoolMemory: throw OutOfPoolMemoryError ( message );
    957     case Result::eErrorInvalidExternalHandle: throw InvalidExternalHandleError ( message );
    958     case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
    959     case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
    960     case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
    961     case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
    962     case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
    963     case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
    964     case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: throw InvalidDrmFormatModifierPlaneLayoutEXTError ( message );
    965     case Result::eErrorFragmentationEXT: throw FragmentationEXTError ( message );
    966     case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError ( message );
    967     default: throw SystemError( make_error_code( result ) );
    968     }
    969   }
    970 #endif
    971 } // namespace VULKAN_HPP_NAMESPACE
    972 
    973 namespace std
    974 {
    975   template <>
    976   struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
    977   {};
    978 }
    979 
    980 namespace VULKAN_HPP_NAMESPACE
    981 {
    982 
    983   template <typename T>
    984   struct ResultValue
    985   {
    986     ResultValue( Result r, T & v )
    987       : result( r )
    988       , value( v )
    989     {}
    990 
    991     ResultValue( Result r, T && v )
    992       : result( r )
    993       , value( std::move( v ) )
    994     {}
    995 
    996     Result  result;
    997     T       value;
    998 
    999     operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
   1000   };
   1001 
   1002   template <typename T>
   1003   struct ResultValueType
   1004   {
   1005 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1006     typedef ResultValue<T>  type;
   1007 #else
   1008     typedef T               type;
   1009 #endif
   1010   };
   1011 
   1012   template <>
   1013   struct ResultValueType<void>
   1014   {
   1015 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1016     typedef Result type;
   1017 #else
   1018     typedef void   type;
   1019 #endif
   1020   };
   1021 
   1022   VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
   1023   {
   1024 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1025     VULKAN_HPP_ASSERT( result == Result::eSuccess );
   1026     return result;
   1027 #else
   1028     if ( result != Result::eSuccess )
   1029     {
   1030       throwResultException( result, message );
   1031     }
   1032 #endif
   1033   }
   1034 
   1035   template <typename T>
   1036   VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
   1037   {
   1038 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1039     VULKAN_HPP_ASSERT( result == Result::eSuccess );
   1040     return ResultValue<T>( result, data );
   1041 #else
   1042     if ( result != Result::eSuccess )
   1043     {
   1044       throwResultException( result, message );
   1045     }
   1046     return std::move( data );
   1047 #endif
   1048   }
   1049 
   1050   VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
   1051   {
   1052 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1053     VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
   1054 #else
   1055     if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
   1056     {
   1057       throwResultException( result, message );
   1058     }
   1059 #endif
   1060     return result;
   1061   }
   1062 
   1063   template <typename T>
   1064   VULKAN_HPP_INLINE ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )
   1065   {
   1066 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1067     VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
   1068 #else
   1069     if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
   1070     {
   1071       throwResultException( result, message );
   1072     }
   1073 #endif
   1074     return ResultValue<T>( result, data );
   1075   }
   1076 
   1077 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   1078   template <typename T, typename D>
   1079   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<T,D>>::type createResultValue( Result result, T & data, char const * message, typename UniqueHandleTraits<T,D>::deleter const& deleter )
   1080   {
   1081 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   1082     VULKAN_HPP_ASSERT( result == Result::eSuccess );
   1083     return ResultValue<UniqueHandle<T,D>>( result, UniqueHandle<T,D>(data, deleter) );
   1084 #else
   1085     if ( result != Result::eSuccess )
   1086     {
   1087       throwResultException( result, message );
   1088     }
   1089     return UniqueHandle<T,D>(data, deleter);
   1090 #endif
   1091   }
   1092 #endif
   1093 
   1094 class DispatchLoaderStatic
   1095 {
   1096 public:
   1097   VkResult vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex  ) const
   1098   {
   1099     return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex);
   1100   }
   1101   VkResult vkAcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex  ) const
   1102   {
   1103     return ::vkAcquireNextImageKHR( device, swapchain, timeout, semaphore, fence, pImageIndex);
   1104   }
   1105 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   1106   VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display  ) const
   1107   {
   1108     return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display);
   1109   }
   1110 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   1111   VkResult vkAllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers  ) const
   1112   {
   1113     return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers);
   1114   }
   1115   VkResult vkAllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets  ) const
   1116   {
   1117     return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets);
   1118   }
   1119   VkResult vkAllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory  ) const
   1120   {
   1121     return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory);
   1122   }
   1123   VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo  ) const
   1124   {
   1125     return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo);
   1126   }
   1127   VkResult vkBindAccelerationStructureMemoryNV( VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos  ) const
   1128   {
   1129     return ::vkBindAccelerationStructureMemoryNV( device, bindInfoCount, pBindInfos);
   1130   }
   1131   VkResult vkBindBufferMemory( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset  ) const
   1132   {
   1133     return ::vkBindBufferMemory( device, buffer, memory, memoryOffset);
   1134   }
   1135   VkResult vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos  ) const
   1136   {
   1137     return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos);
   1138   }
   1139   VkResult vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos  ) const
   1140   {
   1141     return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos);
   1142   }
   1143   VkResult vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset  ) const
   1144   {
   1145     return ::vkBindImageMemory( device, image, memory, memoryOffset);
   1146   }
   1147   VkResult vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos  ) const
   1148   {
   1149     return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos);
   1150   }
   1151   VkResult vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos  ) const
   1152   {
   1153     return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos);
   1154   }
   1155   void vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin  ) const
   1156   {
   1157     return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin);
   1158   }
   1159   void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo  ) const
   1160   {
   1161     return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo);
   1162   }
   1163   void vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags  ) const
   1164   {
   1165     return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags);
   1166   }
   1167   void vkCmdBeginQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index  ) const
   1168   {
   1169     return ::vkCmdBeginQueryIndexedEXT( commandBuffer, queryPool, query, flags, index);
   1170   }
   1171   void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents  ) const
   1172   {
   1173     return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents);
   1174   }
   1175   void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo  ) const
   1176   {
   1177     return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
   1178   }
   1179   void vkCmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets  ) const
   1180   {
   1181     return ::vkCmdBeginTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
   1182   }
   1183   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
   1184   {
   1185     return ::vkCmdBindDescriptorSets( commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
   1186   }
   1187   void vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType  ) const
   1188   {
   1189     return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType);
   1190   }
   1191   void vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline  ) const
   1192   {
   1193     return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline);
   1194   }
   1195   void vkCmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout  ) const
   1196   {
   1197     return ::vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout);
   1198   }
   1199   void vkCmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes  ) const
   1200   {
   1201     return ::vkCmdBindTransformFeedbackBuffersEXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
   1202   }
   1203   void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets  ) const
   1204   {
   1205     return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
   1206   }
   1207   void vkCmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter  ) const
   1208   {
   1209     return ::vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
   1210   }
   1211   void vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset  ) const
   1212   {
   1213     return ::vkCmdBuildAccelerationStructureNV( commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
   1214   }
   1215   void vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects  ) const
   1216   {
   1217     return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
   1218   }
   1219   void vkCmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges  ) const
   1220   {
   1221     return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
   1222   }
   1223   void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges  ) const
   1224   {
   1225     return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
   1226   }
   1227   void vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode  ) const
   1228   {
   1229     return ::vkCmdCopyAccelerationStructureNV( commandBuffer, dst, src, mode);
   1230   }
   1231   void vkCmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions  ) const
   1232   {
   1233     return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
   1234   }
   1235   void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions  ) const
   1236   {
   1237     return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
   1238   }
   1239   void vkCmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions  ) const
   1240   {
   1241     return ::vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
   1242   }
   1243   void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions  ) const
   1244   {
   1245     return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
   1246   }
   1247   void vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags  ) const
   1248   {
   1249     return ::vkCmdCopyQueryPoolResults( commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
   1250   }
   1251   void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo  ) const
   1252   {
   1253     return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo);
   1254   }
   1255   void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer  ) const
   1256   {
   1257     return ::vkCmdDebugMarkerEndEXT( commandBuffer);
   1258   }
   1259   void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo  ) const
   1260   {
   1261     return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo);
   1262   }
   1263   void vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ  ) const
   1264   {
   1265     return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ);
   1266   }
   1267   void vkCmdDispatchBase( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ  ) const
   1268   {
   1269     return ::vkCmdDispatchBase( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
   1270   }
   1271   void vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ  ) const
   1272   {
   1273     return ::vkCmdDispatchBaseKHR( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
   1274   }
   1275   void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset  ) const
   1276   {
   1277     return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset);
   1278   }
   1279   void vkCmdDraw( VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance  ) const
   1280   {
   1281     return ::vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
   1282   }
   1283   void vkCmdDrawIndexed( VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance  ) const
   1284   {
   1285     return ::vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
   1286   }
   1287   void vkCmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride  ) const
   1288   {
   1289     return ::vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride);
   1290   }
   1291   void vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride  ) const
   1292   {
   1293     return ::vkCmdDrawIndexedIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
   1294   }
   1295   void vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride  ) const
   1296   {
   1297     return ::vkCmdDrawIndexedIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
   1298   }
   1299   void vkCmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride  ) const
   1300   {
   1301     return ::vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride);
   1302   }
   1303   void vkCmdDrawIndirectByteCountEXT( VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride  ) const
   1304   {
   1305     return ::vkCmdDrawIndirectByteCountEXT( commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
   1306   }
   1307   void vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride  ) const
   1308   {
   1309     return ::vkCmdDrawIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
   1310   }
   1311   void vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride  ) const
   1312   {
   1313     return ::vkCmdDrawIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
   1314   }
   1315   void vkCmdDrawMeshTasksIndirectCountNV( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride  ) const
   1316   {
   1317     return ::vkCmdDrawMeshTasksIndirectCountNV( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
   1318   }
   1319   void vkCmdDrawMeshTasksIndirectNV( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride  ) const
   1320   {
   1321     return ::vkCmdDrawMeshTasksIndirectNV( commandBuffer, buffer, offset, drawCount, stride);
   1322   }
   1323   void vkCmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask  ) const
   1324   {
   1325     return ::vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask);
   1326   }
   1327   void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer  ) const
   1328   {
   1329     return ::vkCmdEndConditionalRenderingEXT( commandBuffer);
   1330   }
   1331   void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer  ) const
   1332   {
   1333     return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer);
   1334   }
   1335   void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query  ) const
   1336   {
   1337     return ::vkCmdEndQuery( commandBuffer, queryPool, query);
   1338   }
   1339   void vkCmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index  ) const
   1340   {
   1341     return ::vkCmdEndQueryIndexedEXT( commandBuffer, queryPool, query, index);
   1342   }
   1343   void vkCmdEndRenderPass( VkCommandBuffer commandBuffer  ) const
   1344   {
   1345     return ::vkCmdEndRenderPass( commandBuffer);
   1346   }
   1347   void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo  ) const
   1348   {
   1349     return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo);
   1350   }
   1351   void vkCmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets  ) const
   1352   {
   1353     return ::vkCmdEndTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
   1354   }
   1355   void vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers  ) const
   1356   {
   1357     return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers);
   1358   }
   1359   void vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data  ) const
   1360   {
   1361     return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data);
   1362   }
   1363   void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo  ) const
   1364   {
   1365     return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo);
   1366   }
   1367   void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents  ) const
   1368   {
   1369     return ::vkCmdNextSubpass( commandBuffer, contents);
   1370   }
   1371   void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo  ) const
   1372   {
   1373     return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
   1374   }
   1375   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
   1376   {
   1377     return ::vkCmdPipelineBarrier( commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
   1378   }
   1379   void vkCmdProcessCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo  ) const
   1380   {
   1381     return ::vkCmdProcessCommandsNVX( commandBuffer, pProcessCommandsInfo);
   1382   }
   1383   void vkCmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues  ) const
   1384   {
   1385     return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues);
   1386   }
   1387   void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites  ) const
   1388   {
   1389     return ::vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
   1390   }
   1391   void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData  ) const
   1392   {
   1393     return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData);
   1394   }
   1395   void vkCmdReserveSpaceForCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo  ) const
   1396   {
   1397     return ::vkCmdReserveSpaceForCommandsNVX( commandBuffer, pReserveSpaceInfo);
   1398   }
   1399   void vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask  ) const
   1400   {
   1401     return ::vkCmdResetEvent( commandBuffer, event, stageMask);
   1402   }
   1403   void vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount  ) const
   1404   {
   1405     return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount);
   1406   }
   1407   void vkCmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions  ) const
   1408   {
   1409     return ::vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
   1410   }
   1411   void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4]  ) const
   1412   {
   1413     return ::vkCmdSetBlendConstants( commandBuffer, blendConstants);
   1414   }
   1415   void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker  ) const
   1416   {
   1417     return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker);
   1418   }
   1419   void vkCmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders  ) const
   1420   {
   1421     return ::vkCmdSetCoarseSampleOrderNV( commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
   1422   }
   1423   void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor  ) const
   1424   {
   1425     return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
   1426   }
   1427   void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds  ) const
   1428   {
   1429     return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds);
   1430   }
   1431   void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask  ) const
   1432   {
   1433     return ::vkCmdSetDeviceMask( commandBuffer, deviceMask);
   1434   }
   1435   void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask  ) const
   1436   {
   1437     return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask);
   1438   }
   1439   void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles  ) const
   1440   {
   1441     return ::vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
   1442   }
   1443   void vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask  ) const
   1444   {
   1445     return ::vkCmdSetEvent( commandBuffer, event, stageMask);
   1446   }
   1447   void vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors  ) const
   1448   {
   1449     return ::vkCmdSetExclusiveScissorNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
   1450   }
   1451   void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth  ) const
   1452   {
   1453     return ::vkCmdSetLineWidth( commandBuffer, lineWidth);
   1454   }
   1455   void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo  ) const
   1456   {
   1457     return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo);
   1458   }
   1459   void vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors  ) const
   1460   {
   1461     return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors);
   1462   }
   1463   void vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask  ) const
   1464   {
   1465     return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask);
   1466   }
   1467   void vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference  ) const
   1468   {
   1469     return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference);
   1470   }
   1471   void vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask  ) const
   1472   {
   1473     return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask);
   1474   }
   1475   void vkCmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports  ) const
   1476   {
   1477     return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports);
   1478   }
   1479   void vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes  ) const
   1480   {
   1481     return ::vkCmdSetViewportShadingRatePaletteNV( commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
   1482   }
   1483   void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings  ) const
   1484   {
   1485     return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings);
   1486   }
   1487   void vkCmdTraceRaysNV( VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth  ) const
   1488   {
   1489     return ::vkCmdTraceRaysNV( commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
   1490   }
   1491   void vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData  ) const
   1492   {
   1493     return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData);
   1494   }
   1495   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
   1496   {
   1497     return ::vkCmdWaitEvents( commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
   1498   }
   1499   void vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery  ) const
   1500   {
   1501     return ::vkCmdWriteAccelerationStructuresPropertiesNV( commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
   1502   }
   1503   void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker  ) const
   1504   {
   1505     return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
   1506   }
   1507   void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query  ) const
   1508   {
   1509     return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query);
   1510   }
   1511   VkResult vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader  ) const
   1512   {
   1513     return ::vkCompileDeferredNV( device, pipeline, shader);
   1514   }
   1515   VkResult vkCreateAccelerationStructureNV( VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure  ) const
   1516   {
   1517     return ::vkCreateAccelerationStructureNV( device, pCreateInfo, pAllocator, pAccelerationStructure);
   1518   }
   1519 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   1520   VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1521   {
   1522     return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1523   }
   1524 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   1525   VkResult vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer  ) const
   1526   {
   1527     return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer);
   1528   }
   1529   VkResult vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView  ) const
   1530   {
   1531     return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView);
   1532   }
   1533   VkResult vkCreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool  ) const
   1534   {
   1535     return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool);
   1536   }
   1537   VkResult vkCreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines  ) const
   1538   {
   1539     return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
   1540   }
   1541   VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback  ) const
   1542   {
   1543     return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback);
   1544   }
   1545   VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger  ) const
   1546   {
   1547     return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger);
   1548   }
   1549   VkResult vkCreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool  ) const
   1550   {
   1551     return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool);
   1552   }
   1553   VkResult vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout  ) const
   1554   {
   1555     return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout);
   1556   }
   1557   VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate  ) const
   1558   {
   1559     return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
   1560   }
   1561   VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate  ) const
   1562   {
   1563     return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
   1564   }
   1565   VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice  ) const
   1566   {
   1567     return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice);
   1568   }
   1569   VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode  ) const
   1570   {
   1571     return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode);
   1572   }
   1573   VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1574   {
   1575     return ::vkCreateDisplayPlaneSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1576   }
   1577   VkResult vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent  ) const
   1578   {
   1579     return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent);
   1580   }
   1581   VkResult vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence  ) const
   1582   {
   1583     return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence);
   1584   }
   1585   VkResult vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer  ) const
   1586   {
   1587     return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer);
   1588   }
   1589   VkResult vkCreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines  ) const
   1590   {
   1591     return ::vkCreateGraphicsPipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
   1592   }
   1593 #ifdef VK_USE_PLATFORM_IOS_MVK
   1594   VkResult vkCreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1595   {
   1596     return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface);
   1597   }
   1598 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   1599   VkResult vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage  ) const
   1600   {
   1601     return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage);
   1602   }
   1603 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   1604   VkResult vkCreateImagePipeSurfaceFUCHSIA( VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1605   {
   1606     return ::vkCreateImagePipeSurfaceFUCHSIA( instance, pCreateInfo, pAllocator, pSurface);
   1607   }
   1608 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   1609   VkResult vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView  ) const
   1610   {
   1611     return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView);
   1612   }
   1613   VkResult vkCreateIndirectCommandsLayoutNVX( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout  ) const
   1614   {
   1615     return ::vkCreateIndirectCommandsLayoutNVX( device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
   1616   }
   1617   VkResult vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance  ) const
   1618   {
   1619     return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance);
   1620   }
   1621 #ifdef VK_USE_PLATFORM_MACOS_MVK
   1622   VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1623   {
   1624     return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface);
   1625   }
   1626 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   1627   VkResult vkCreateObjectTableNVX( VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable  ) const
   1628   {
   1629     return ::vkCreateObjectTableNVX( device, pCreateInfo, pAllocator, pObjectTable);
   1630   }
   1631   VkResult vkCreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache  ) const
   1632   {
   1633     return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache);
   1634   }
   1635   VkResult vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout  ) const
   1636   {
   1637     return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout);
   1638   }
   1639   VkResult vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool  ) const
   1640   {
   1641     return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool);
   1642   }
   1643   VkResult vkCreateRayTracingPipelinesNV( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines  ) const
   1644   {
   1645     return ::vkCreateRayTracingPipelinesNV( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
   1646   }
   1647   VkResult vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass  ) const
   1648   {
   1649     return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass);
   1650   }
   1651   VkResult vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass  ) const
   1652   {
   1653     return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass);
   1654   }
   1655   VkResult vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler  ) const
   1656   {
   1657     return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler);
   1658   }
   1659   VkResult vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion  ) const
   1660   {
   1661     return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion);
   1662   }
   1663   VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion  ) const
   1664   {
   1665     return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion);
   1666   }
   1667   VkResult vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore  ) const
   1668   {
   1669     return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore);
   1670   }
   1671   VkResult vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule  ) const
   1672   {
   1673     return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule);
   1674   }
   1675   VkResult vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains  ) const
   1676   {
   1677     return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
   1678   }
   1679   VkResult vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain  ) const
   1680   {
   1681     return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain);
   1682   }
   1683   VkResult vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache  ) const
   1684   {
   1685     return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache);
   1686   }
   1687 #ifdef VK_USE_PLATFORM_VI_NN
   1688   VkResult vkCreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1689   {
   1690     return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface);
   1691   }
   1692 #endif /*VK_USE_PLATFORM_VI_NN*/
   1693 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   1694   VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1695   {
   1696     return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1697   }
   1698 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   1699 #ifdef VK_USE_PLATFORM_WIN32_KHR
   1700   VkResult vkCreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1701   {
   1702     return ::vkCreateWin32SurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1703   }
   1704 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   1705 #ifdef VK_USE_PLATFORM_XCB_KHR
   1706   VkResult vkCreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1707   {
   1708     return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1709   }
   1710 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   1711 #ifdef VK_USE_PLATFORM_XLIB_KHR
   1712   VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface  ) const
   1713   {
   1714     return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
   1715   }
   1716 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   1717   VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo  ) const
   1718   {
   1719     return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo);
   1720   }
   1721   VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo  ) const
   1722   {
   1723     return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo);
   1724   }
   1725   void vkDebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage  ) const
   1726   {
   1727     return ::vkDebugReportMessageEXT( instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
   1728   }
   1729   void vkDestroyAccelerationStructureNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator  ) const
   1730   {
   1731     return ::vkDestroyAccelerationStructureNV( device, accelerationStructure, pAllocator);
   1732   }
   1733   void vkDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator  ) const
   1734   {
   1735     return ::vkDestroyBuffer( device, buffer, pAllocator);
   1736   }
   1737   void vkDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator  ) const
   1738   {
   1739     return ::vkDestroyBufferView( device, bufferView, pAllocator);
   1740   }
   1741   void vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator  ) const
   1742   {
   1743     return ::vkDestroyCommandPool( device, commandPool, pAllocator);
   1744   }
   1745   void vkDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator  ) const
   1746   {
   1747     return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator);
   1748   }
   1749   void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator  ) const
   1750   {
   1751     return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator);
   1752   }
   1753   void vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator  ) const
   1754   {
   1755     return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator);
   1756   }
   1757   void vkDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator  ) const
   1758   {
   1759     return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator);
   1760   }
   1761   void vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator  ) const
   1762   {
   1763     return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator);
   1764   }
   1765   void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator  ) const
   1766   {
   1767     return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator);
   1768   }
   1769   void vkDestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator  ) const
   1770   {
   1771     return ::vkDestroyDevice( device, pAllocator);
   1772   }
   1773   void vkDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator  ) const
   1774   {
   1775     return ::vkDestroyEvent( device, event, pAllocator);
   1776   }
   1777   void vkDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator  ) const
   1778   {
   1779     return ::vkDestroyFence( device, fence, pAllocator);
   1780   }
   1781   void vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator  ) const
   1782   {
   1783     return ::vkDestroyFramebuffer( device, framebuffer, pAllocator);
   1784   }
   1785   void vkDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator  ) const
   1786   {
   1787     return ::vkDestroyImage( device, image, pAllocator);
   1788   }
   1789   void vkDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator  ) const
   1790   {
   1791     return ::vkDestroyImageView( device, imageView, pAllocator);
   1792   }
   1793   void vkDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator  ) const
   1794   {
   1795     return ::vkDestroyIndirectCommandsLayoutNVX( device, indirectCommandsLayout, pAllocator);
   1796   }
   1797   void vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator  ) const
   1798   {
   1799     return ::vkDestroyInstance( instance, pAllocator);
   1800   }
   1801   void vkDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator  ) const
   1802   {
   1803     return ::vkDestroyObjectTableNVX( device, objectTable, pAllocator);
   1804   }
   1805   void vkDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator  ) const
   1806   {
   1807     return ::vkDestroyPipeline( device, pipeline, pAllocator);
   1808   }
   1809   void vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator  ) const
   1810   {
   1811     return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator);
   1812   }
   1813   void vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator  ) const
   1814   {
   1815     return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator);
   1816   }
   1817   void vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator  ) const
   1818   {
   1819     return ::vkDestroyQueryPool( device, queryPool, pAllocator);
   1820   }
   1821   void vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator  ) const
   1822   {
   1823     return ::vkDestroyRenderPass( device, renderPass, pAllocator);
   1824   }
   1825   void vkDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator  ) const
   1826   {
   1827     return ::vkDestroySampler( device, sampler, pAllocator);
   1828   }
   1829   void vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator  ) const
   1830   {
   1831     return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator);
   1832   }
   1833   void vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator  ) const
   1834   {
   1835     return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator);
   1836   }
   1837   void vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator  ) const
   1838   {
   1839     return ::vkDestroySemaphore( device, semaphore, pAllocator);
   1840   }
   1841   void vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator  ) const
   1842   {
   1843     return ::vkDestroyShaderModule( device, shaderModule, pAllocator);
   1844   }
   1845   void vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator  ) const
   1846   {
   1847     return ::vkDestroySurfaceKHR( instance, surface, pAllocator);
   1848   }
   1849   void vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator  ) const
   1850   {
   1851     return ::vkDestroySwapchainKHR( device, swapchain, pAllocator);
   1852   }
   1853   void vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator  ) const
   1854   {
   1855     return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator);
   1856   }
   1857   VkResult vkDeviceWaitIdle( VkDevice device  ) const
   1858   {
   1859     return ::vkDeviceWaitIdle( device);
   1860   }
   1861   VkResult vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo  ) const
   1862   {
   1863     return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo);
   1864   }
   1865   VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer  ) const
   1866   {
   1867     return ::vkEndCommandBuffer( commandBuffer);
   1868   }
   1869   VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties  ) const
   1870   {
   1871     return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties);
   1872   }
   1873   VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties  ) const
   1874   {
   1875     return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties);
   1876   }
   1877   VkResult vkEnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties  ) const
   1878   {
   1879     return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties);
   1880   }
   1881   VkResult vkEnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties  ) const
   1882   {
   1883     return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties);
   1884   }
   1885   VkResult vkEnumerateInstanceVersion( uint32_t* pApiVersion  ) const
   1886   {
   1887     return ::vkEnumerateInstanceVersion( pApiVersion);
   1888   }
   1889   VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties  ) const
   1890   {
   1891     return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
   1892   }
   1893   VkResult vkEnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties  ) const
   1894   {
   1895     return ::vkEnumeratePhysicalDeviceGroupsKHR( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
   1896   }
   1897   VkResult vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices  ) const
   1898   {
   1899     return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices);
   1900   }
   1901   VkResult vkFlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges  ) const
   1902   {
   1903     return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges);
   1904   }
   1905   void vkFreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers  ) const
   1906   {
   1907     return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers);
   1908   }
   1909   VkResult vkFreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets  ) const
   1910   {
   1911     return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets);
   1912   }
   1913   void vkFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator  ) const
   1914   {
   1915     return ::vkFreeMemory( device, memory, pAllocator);
   1916   }
   1917   VkResult vkGetAccelerationStructureHandleNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData  ) const
   1918   {
   1919     return ::vkGetAccelerationStructureHandleNV( device, accelerationStructure, dataSize, pData);
   1920   }
   1921   void vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements  ) const
   1922   {
   1923     return ::vkGetAccelerationStructureMemoryRequirementsNV( device, pInfo, pMemoryRequirements);
   1924   }
   1925 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   1926   VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties  ) const
   1927   {
   1928     return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties);
   1929   }
   1930 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   1931   void vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements  ) const
   1932   {
   1933     return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements);
   1934   }
   1935   void vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements  ) const
   1936   {
   1937     return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements);
   1938   }
   1939   void vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements  ) const
   1940   {
   1941     return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements);
   1942   }
   1943   VkResult vkGetCalibratedTimestampsEXT( VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation  ) const
   1944   {
   1945     return ::vkGetCalibratedTimestampsEXT( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
   1946   }
   1947   void vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport  ) const
   1948   {
   1949     return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport);
   1950   }
   1951   void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport  ) const
   1952   {
   1953     return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport);
   1954   }
   1955   void vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures  ) const
   1956   {
   1957     return ::vkGetDeviceGroupPeerMemoryFeatures( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
   1958   }
   1959   void vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures  ) const
   1960   {
   1961     return ::vkGetDeviceGroupPeerMemoryFeaturesKHR( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
   1962   }
   1963   VkResult vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities  ) const
   1964   {
   1965     return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities);
   1966   }
   1967   VkResult vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes  ) const
   1968   {
   1969     return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes);
   1970   }
   1971   void vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes  ) const
   1972   {
   1973     return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes);
   1974   }
   1975   PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, const char* pName  ) const
   1976   {
   1977     return ::vkGetDeviceProcAddr( device, pName);
   1978   }
   1979   void vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue  ) const
   1980   {
   1981     return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue);
   1982   }
   1983   void vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue  ) const
   1984   {
   1985     return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue);
   1986   }
   1987   VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties  ) const
   1988   {
   1989     return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties);
   1990   }
   1991   VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties  ) const
   1992   {
   1993     return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties);
   1994   }
   1995   VkResult vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities  ) const
   1996   {
   1997     return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities);
   1998   }
   1999   VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities  ) const
   2000   {
   2001     return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities);
   2002   }
   2003   VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays  ) const
   2004   {
   2005     return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays);
   2006   }
   2007   VkResult vkGetEventStatus( VkDevice device, VkEvent event  ) const
   2008   {
   2009     return ::vkGetEventStatus( device, event);
   2010   }
   2011   VkResult vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd  ) const
   2012   {
   2013     return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd);
   2014   }
   2015   VkResult vkGetFenceStatus( VkDevice device, VkFence fence  ) const
   2016   {
   2017     return ::vkGetFenceStatus( device, fence);
   2018   }
   2019 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2020   VkResult vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle  ) const
   2021   {
   2022     return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
   2023   }
   2024 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2025   VkResult vkGetImageDrmFormatModifierPropertiesEXT( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties  ) const
   2026   {
   2027     return ::vkGetImageDrmFormatModifierPropertiesEXT( device, image, pProperties);
   2028   }
   2029   void vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements  ) const
   2030   {
   2031     return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements);
   2032   }
   2033   void vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements  ) const
   2034   {
   2035     return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements);
   2036   }
   2037   void vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements  ) const
   2038   {
   2039     return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements);
   2040   }
   2041   void vkGetImageSparseMemoryRequirements( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements  ) const
   2042   {
   2043     return ::vkGetImageSparseMemoryRequirements( device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
   2044   }
   2045   void vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements  ) const
   2046   {
   2047     return ::vkGetImageSparseMemoryRequirements2( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
   2048   }
   2049   void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements  ) const
   2050   {
   2051     return ::vkGetImageSparseMemoryRequirements2KHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
   2052   }
   2053   void vkGetImageSubresourceLayout( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout  ) const
   2054   {
   2055     return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout);
   2056   }
   2057   PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char* pName  ) const
   2058   {
   2059     return ::vkGetInstanceProcAddr( instance, pName);
   2060   }
   2061 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   2062   VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer  ) const
   2063   {
   2064     return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer);
   2065   }
   2066 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   2067   VkResult vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd  ) const
   2068   {
   2069     return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd);
   2070   }
   2071   VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties  ) const
   2072   {
   2073     return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties);
   2074   }
   2075   VkResult vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties  ) const
   2076   {
   2077     return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties);
   2078   }
   2079 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2080   VkResult vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle  ) const
   2081   {
   2082     return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
   2083   }
   2084 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2085 #ifdef VK_USE_PLATFORM_WIN32_NV
   2086   VkResult vkGetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle  ) const
   2087   {
   2088     return ::vkGetMemoryWin32HandleNV( device, memory, handleType, pHandle);
   2089   }
   2090 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   2091 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2092   VkResult vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties  ) const
   2093   {
   2094     return ::vkGetMemoryWin32HandlePropertiesKHR( device, handleType, handle, pMemoryWin32HandleProperties);
   2095   }
   2096 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2097   VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings  ) const
   2098   {
   2099     return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings);
   2100   }
   2101   VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains  ) const
   2102   {
   2103     return ::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( physicalDevice, pTimeDomainCount, pTimeDomains);
   2104   }
   2105   VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties  ) const
   2106   {
   2107     return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties);
   2108   }
   2109   VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties  ) const
   2110   {
   2111     return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties);
   2112   }
   2113   VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties  ) const
   2114   {
   2115     return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties);
   2116   }
   2117   VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties  ) const
   2118   {
   2119     return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties);
   2120   }
   2121   void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties  ) const
   2122   {
   2123     return ::vkGetPhysicalDeviceExternalBufferProperties( physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
   2124   }
   2125   void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties  ) const
   2126   {
   2127     return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
   2128   }
   2129   void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties  ) const
   2130   {
   2131     return ::vkGetPhysicalDeviceExternalFenceProperties( physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
   2132   }
   2133   void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties  ) const
   2134   {
   2135     return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
   2136   }
   2137   VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties  ) const
   2138   {
   2139     return ::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
   2140   }
   2141   void vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties  ) const
   2142   {
   2143     return ::vkGetPhysicalDeviceExternalSemaphoreProperties( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
   2144   }
   2145   void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties  ) const
   2146   {
   2147     return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
   2148   }
   2149   void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures  ) const
   2150   {
   2151     return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures);
   2152   }
   2153   void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures  ) const
   2154   {
   2155     return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures);
   2156   }
   2157   void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures  ) const
   2158   {
   2159     return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures);
   2160   }
   2161   void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties  ) const
   2162   {
   2163     return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties);
   2164   }
   2165   void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties  ) const
   2166   {
   2167     return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties);
   2168   }
   2169   void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties  ) const
   2170   {
   2171     return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties);
   2172   }
   2173   void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits  ) const
   2174   {
   2175     return ::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( physicalDevice, pFeatures, pLimits);
   2176   }
   2177   VkResult vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties  ) const
   2178   {
   2179     return ::vkGetPhysicalDeviceImageFormatProperties( physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
   2180   }
   2181   VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties  ) const
   2182   {
   2183     return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties);
   2184   }
   2185   VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties  ) const
   2186   {
   2187     return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties);
   2188   }
   2189   void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties  ) const
   2190   {
   2191     return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties);
   2192   }
   2193   void vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties  ) const
   2194   {
   2195     return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties);
   2196   }
   2197   void vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties  ) const
   2198   {
   2199     return ::vkGetPhysicalDeviceMemoryProperties2KHR( physicalDevice, pMemoryProperties);
   2200   }
   2201   void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties  ) const
   2202   {
   2203     return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties);
   2204   }
   2205   VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects  ) const
   2206   {
   2207     return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects);
   2208   }
   2209   void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties  ) const
   2210   {
   2211     return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties);
   2212   }
   2213   void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties  ) const
   2214   {
   2215     return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties);
   2216   }
   2217   void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties  ) const
   2218   {
   2219     return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties);
   2220   }
   2221   void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties  ) const
   2222   {
   2223     return ::vkGetPhysicalDeviceQueueFamilyProperties( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
   2224   }
   2225   void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties  ) const
   2226   {
   2227     return ::vkGetPhysicalDeviceQueueFamilyProperties2( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
   2228   }
   2229   void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties  ) const
   2230   {
   2231     return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
   2232   }
   2233   void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties  ) const
   2234   {
   2235     return ::vkGetPhysicalDeviceSparseImageFormatProperties( physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
   2236   }
   2237   void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties  ) const
   2238   {
   2239     return ::vkGetPhysicalDeviceSparseImageFormatProperties2( physicalDevice, pFormatInfo, pPropertyCount, pProperties);
   2240   }
   2241   void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties  ) const
   2242   {
   2243     return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( physicalDevice, pFormatInfo, pPropertyCount, pProperties);
   2244   }
   2245   VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities  ) const
   2246   {
   2247     return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities);
   2248   }
   2249   VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities  ) const
   2250   {
   2251     return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
   2252   }
   2253   VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities  ) const
   2254   {
   2255     return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities);
   2256   }
   2257   VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats  ) const
   2258   {
   2259     return ::vkGetPhysicalDeviceSurfaceFormats2KHR( physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
   2260   }
   2261   VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats  ) const
   2262   {
   2263     return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
   2264   }
   2265   VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes  ) const
   2266   {
   2267     return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes);
   2268   }
   2269   VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported  ) const
   2270   {
   2271     return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported);
   2272   }
   2273 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   2274   VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display  ) const
   2275   {
   2276     return ::vkGetPhysicalDeviceWaylandPresentationSupportKHR( physicalDevice, queueFamilyIndex, display);
   2277   }
   2278 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   2279 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2280   VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex  ) const
   2281   {
   2282     return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex);
   2283   }
   2284 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2285 #ifdef VK_USE_PLATFORM_XCB_KHR
   2286   VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id  ) const
   2287   {
   2288     return ::vkGetPhysicalDeviceXcbPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection, visual_id);
   2289   }
   2290 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   2291 #ifdef VK_USE_PLATFORM_XLIB_KHR
   2292   VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID  ) const
   2293   {
   2294     return ::vkGetPhysicalDeviceXlibPresentationSupportKHR( physicalDevice, queueFamilyIndex, dpy, visualID);
   2295   }
   2296 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   2297   VkResult vkGetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData  ) const
   2298   {
   2299     return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData);
   2300   }
   2301   VkResult vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags  ) const
   2302   {
   2303     return ::vkGetQueryPoolResults( device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
   2304   }
   2305   void vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData  ) const
   2306   {
   2307     return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData);
   2308   }
   2309 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   2310   VkResult vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay  ) const
   2311   {
   2312     return ::vkGetRandROutputDisplayEXT( physicalDevice, dpy, rrOutput, pDisplay);
   2313   }
   2314 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   2315   VkResult vkGetRayTracingShaderGroupHandlesNV( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData  ) const
   2316   {
   2317     return ::vkGetRayTracingShaderGroupHandlesNV( device, pipeline, firstGroup, groupCount, dataSize, pData);
   2318   }
   2319   VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties  ) const
   2320   {
   2321     return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties);
   2322   }
   2323   void vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity  ) const
   2324   {
   2325     return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity);
   2326   }
   2327   VkResult vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd  ) const
   2328   {
   2329     return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd);
   2330   }
   2331 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2332   VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle  ) const
   2333   {
   2334     return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
   2335   }
   2336 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2337   VkResult vkGetShaderInfoAMD( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo  ) const
   2338   {
   2339     return ::vkGetShaderInfoAMD( device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
   2340   }
   2341   VkResult vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue  ) const
   2342   {
   2343     return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue);
   2344   }
   2345   VkResult vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages  ) const
   2346   {
   2347     return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages);
   2348   }
   2349   VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain  ) const
   2350   {
   2351     return ::vkGetSwapchainStatusKHR( device, swapchain);
   2352   }
   2353   VkResult vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData  ) const
   2354   {
   2355     return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData);
   2356   }
   2357   VkResult vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo  ) const
   2358   {
   2359     return ::vkImportFenceFdKHR( device, pImportFenceFdInfo);
   2360   }
   2361 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2362   VkResult vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo  ) const
   2363   {
   2364     return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo);
   2365   }
   2366 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2367   VkResult vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo  ) const
   2368   {
   2369     return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo);
   2370   }
   2371 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2372   VkResult vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo  ) const
   2373   {
   2374     return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo);
   2375   }
   2376 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2377   VkResult vkInvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges  ) const
   2378   {
   2379     return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges);
   2380   }
   2381   VkResult vkMapMemory( VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData  ) const
   2382   {
   2383     return ::vkMapMemory( device, memory, offset, size, flags, ppData);
   2384   }
   2385   VkResult vkMergePipelineCaches( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches  ) const
   2386   {
   2387     return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches);
   2388   }
   2389   VkResult vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches  ) const
   2390   {
   2391     return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches);
   2392   }
   2393   void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo  ) const
   2394   {
   2395     return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo);
   2396   }
   2397   VkResult vkQueueBindSparse( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence  ) const
   2398   {
   2399     return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence);
   2400   }
   2401   void vkQueueEndDebugUtilsLabelEXT( VkQueue queue  ) const
   2402   {
   2403     return ::vkQueueEndDebugUtilsLabelEXT( queue);
   2404   }
   2405   void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo  ) const
   2406   {
   2407     return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo);
   2408   }
   2409   VkResult vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo  ) const
   2410   {
   2411     return ::vkQueuePresentKHR( queue, pPresentInfo);
   2412   }
   2413   VkResult vkQueueSubmit( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence  ) const
   2414   {
   2415     return ::vkQueueSubmit( queue, submitCount, pSubmits, fence);
   2416   }
   2417   VkResult vkQueueWaitIdle( VkQueue queue  ) const
   2418   {
   2419     return ::vkQueueWaitIdle( queue);
   2420   }
   2421   VkResult vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence  ) const
   2422   {
   2423     return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence);
   2424   }
   2425   VkResult vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence  ) const
   2426   {
   2427     return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence);
   2428   }
   2429   VkResult vkRegisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices  ) const
   2430   {
   2431     return ::vkRegisterObjectsNVX( device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
   2432   }
   2433   VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display  ) const
   2434   {
   2435     return ::vkReleaseDisplayEXT( physicalDevice, display);
   2436   }
   2437   VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags  ) const
   2438   {
   2439     return ::vkResetCommandBuffer( commandBuffer, flags);
   2440   }
   2441   VkResult vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags  ) const
   2442   {
   2443     return ::vkResetCommandPool( device, commandPool, flags);
   2444   }
   2445   VkResult vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags  ) const
   2446   {
   2447     return ::vkResetDescriptorPool( device, descriptorPool, flags);
   2448   }
   2449   VkResult vkResetEvent( VkDevice device, VkEvent event  ) const
   2450   {
   2451     return ::vkResetEvent( device, event);
   2452   }
   2453   VkResult vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences  ) const
   2454   {
   2455     return ::vkResetFences( device, fenceCount, pFences);
   2456   }
   2457   VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo  ) const
   2458   {
   2459     return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo);
   2460   }
   2461   VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo  ) const
   2462   {
   2463     return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo);
   2464   }
   2465   VkResult vkSetEvent( VkDevice device, VkEvent event  ) const
   2466   {
   2467     return ::vkSetEvent( device, event);
   2468   }
   2469   void vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata  ) const
   2470   {
   2471     return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata);
   2472   }
   2473   void vkSubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData  ) const
   2474   {
   2475     return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData);
   2476   }
   2477   void vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags  ) const
   2478   {
   2479     return ::vkTrimCommandPool( device, commandPool, flags);
   2480   }
   2481   void vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags  ) const
   2482   {
   2483     return ::vkTrimCommandPoolKHR( device, commandPool, flags);
   2484   }
   2485   void vkUnmapMemory( VkDevice device, VkDeviceMemory memory  ) const
   2486   {
   2487     return ::vkUnmapMemory( device, memory);
   2488   }
   2489   VkResult vkUnregisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices  ) const
   2490   {
   2491     return ::vkUnregisterObjectsNVX( device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
   2492   }
   2493   void vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData  ) const
   2494   {
   2495     return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData);
   2496   }
   2497   void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData  ) const
   2498   {
   2499     return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData);
   2500   }
   2501   void vkUpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies  ) const
   2502   {
   2503     return ::vkUpdateDescriptorSets( device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
   2504   }
   2505   VkResult vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout  ) const
   2506   {
   2507     return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout);
   2508   }
   2509 };
   2510 
   2511   struct AllocationCallbacks;
   2512 
   2513   template <typename OwnerType, typename Dispatch>
   2514   class ObjectDestroy
   2515   {
   2516     public:
   2517       ObjectDestroy( OwnerType owner = OwnerType(), Optional<const AllocationCallbacks> allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() )
   2518         : m_owner( owner )
   2519         , m_allocationCallbacks( allocationCallbacks )
   2520         , m_dispatch( &dispatch )
   2521       {}
   2522 
   2523       OwnerType getOwner() const { return m_owner; }
   2524       Optional<const AllocationCallbacks> getAllocator() const { return m_allocationCallbacks; }
   2525 
   2526     protected:
   2527       template <typename T>
   2528       void destroy(T t)
   2529       {
   2530         m_owner.destroy( t, m_allocationCallbacks, *m_dispatch );
   2531       }
   2532 
   2533     private:
   2534       OwnerType m_owner;
   2535       Optional<const AllocationCallbacks> m_allocationCallbacks;
   2536       Dispatch const* m_dispatch;
   2537   };
   2538 
   2539   class NoParent;
   2540 
   2541   template <typename Dispatch>
   2542   class ObjectDestroy<NoParent,Dispatch>
   2543   {
   2544     public:
   2545       ObjectDestroy( Optional<const AllocationCallbacks> allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() )
   2546         : m_allocationCallbacks( allocationCallbacks )
   2547         , m_dispatch( &dispatch )
   2548       {}
   2549 
   2550       Optional<const AllocationCallbacks> getAllocator() const { return m_allocationCallbacks; }
   2551 
   2552     protected:
   2553       template <typename T>
   2554       void destroy(T t)
   2555       {
   2556         t.destroy( m_allocationCallbacks, *m_dispatch );
   2557       }
   2558 
   2559     private:
   2560       Optional<const AllocationCallbacks> m_allocationCallbacks;
   2561       Dispatch const* m_dispatch;
   2562   };
   2563 
   2564   template <typename OwnerType, typename Dispatch>
   2565   class ObjectFree
   2566   {
   2567     public:
   2568       ObjectFree( OwnerType owner = OwnerType(), Optional<const AllocationCallbacks> allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() )
   2569         : m_owner( owner )
   2570         , m_allocationCallbacks( allocationCallbacks )
   2571         , m_dispatch( &dispatch )
   2572       {}
   2573 
   2574       OwnerType getOwner() const { return m_owner; }
   2575       Optional<const AllocationCallbacks> getAllocator() const { return m_allocationCallbacks; }
   2576 
   2577     protected:
   2578       template <typename T>
   2579       void destroy(T t)
   2580       {
   2581         m_owner.free( t, m_allocationCallbacks, *m_dispatch );
   2582       }
   2583 
   2584     private:
   2585       OwnerType m_owner;
   2586       Optional<const AllocationCallbacks> m_allocationCallbacks;
   2587       Dispatch const* m_dispatch;
   2588   };
   2589 
   2590   template <typename OwnerType, typename PoolType, typename Dispatch>
   2591   class PoolFree
   2592   {
   2593     public:
   2594       PoolFree( OwnerType owner = OwnerType(), PoolType pool = PoolType(), Dispatch const &dispatch = Dispatch() )
   2595         : m_owner( owner )
   2596         , m_pool( pool )
   2597         , m_dispatch( &dispatch )
   2598       {}
   2599 
   2600       OwnerType getOwner() const { return m_owner; }
   2601       PoolType getPool() const { return m_pool; }
   2602 
   2603     protected:
   2604       template <typename T>
   2605       void destroy(T t)
   2606       {
   2607         m_owner.free( m_pool, t, *m_dispatch );
   2608       }
   2609 
   2610     private:
   2611       OwnerType m_owner;
   2612       PoolType m_pool;
   2613       Dispatch const* m_dispatch;
   2614   };
   2615 
   2616   using SampleMask = uint32_t;
   2617 
   2618   using Bool32 = uint32_t;
   2619 
   2620   using DeviceSize = uint64_t;
   2621 
   2622   enum class FramebufferCreateFlagBits
   2623   {
   2624   };
   2625 
   2626   using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
   2627 
   2628   enum class QueryPoolCreateFlagBits
   2629   {
   2630   };
   2631 
   2632   using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
   2633 
   2634   enum class RenderPassCreateFlagBits
   2635   {
   2636   };
   2637 
   2638   using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
   2639 
   2640   enum class SamplerCreateFlagBits
   2641   {
   2642   };
   2643 
   2644   using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
   2645 
   2646   enum class PipelineLayoutCreateFlagBits
   2647   {
   2648   };
   2649 
   2650   using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
   2651 
   2652   enum class PipelineCacheCreateFlagBits
   2653   {
   2654   };
   2655 
   2656   using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
   2657 
   2658   enum class PipelineDepthStencilStateCreateFlagBits
   2659   {
   2660   };
   2661 
   2662   using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
   2663 
   2664   enum class PipelineDynamicStateCreateFlagBits
   2665   {
   2666   };
   2667 
   2668   using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
   2669 
   2670   enum class PipelineColorBlendStateCreateFlagBits
   2671   {
   2672   };
   2673 
   2674   using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
   2675 
   2676   enum class PipelineMultisampleStateCreateFlagBits
   2677   {
   2678   };
   2679 
   2680   using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
   2681 
   2682   enum class PipelineRasterizationStateCreateFlagBits
   2683   {
   2684   };
   2685 
   2686   using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
   2687 
   2688   enum class PipelineViewportStateCreateFlagBits
   2689   {
   2690   };
   2691 
   2692   using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
   2693 
   2694   enum class PipelineTessellationStateCreateFlagBits
   2695   {
   2696   };
   2697 
   2698   using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
   2699 
   2700   enum class PipelineInputAssemblyStateCreateFlagBits
   2701   {
   2702   };
   2703 
   2704   using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
   2705 
   2706   enum class PipelineVertexInputStateCreateFlagBits
   2707   {
   2708   };
   2709 
   2710   using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
   2711 
   2712   enum class PipelineShaderStageCreateFlagBits
   2713   {
   2714   };
   2715 
   2716   using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
   2717 
   2718   enum class BufferViewCreateFlagBits
   2719   {
   2720   };
   2721 
   2722   using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
   2723 
   2724   enum class InstanceCreateFlagBits
   2725   {
   2726   };
   2727 
   2728   using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
   2729 
   2730   enum class DeviceCreateFlagBits
   2731   {
   2732   };
   2733 
   2734   using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
   2735 
   2736   enum class ImageViewCreateFlagBits
   2737   {
   2738   };
   2739 
   2740   using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
   2741 
   2742   enum class SemaphoreCreateFlagBits
   2743   {
   2744   };
   2745 
   2746   using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
   2747 
   2748   enum class ShaderModuleCreateFlagBits
   2749   {
   2750   };
   2751 
   2752   using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
   2753 
   2754   enum class EventCreateFlagBits
   2755   {
   2756   };
   2757 
   2758   using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
   2759 
   2760   enum class MemoryMapFlagBits
   2761   {
   2762   };
   2763 
   2764   using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
   2765 
   2766   enum class DescriptorPoolResetFlagBits
   2767   {
   2768   };
   2769 
   2770   using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
   2771 
   2772   enum class DescriptorUpdateTemplateCreateFlagBits
   2773   {
   2774   };
   2775 
   2776   using DescriptorUpdateTemplateCreateFlags = Flags<DescriptorUpdateTemplateCreateFlagBits, VkDescriptorUpdateTemplateCreateFlags>;
   2777 
   2778   using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags;
   2779 
   2780   enum class DisplayModeCreateFlagBitsKHR
   2781   {
   2782   };
   2783 
   2784   using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
   2785 
   2786   enum class DisplaySurfaceCreateFlagBitsKHR
   2787   {
   2788   };
   2789 
   2790   using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
   2791 
   2792 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   2793   enum class AndroidSurfaceCreateFlagBitsKHR
   2794   {
   2795   };
   2796 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   2797 
   2798 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   2799   using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
   2800 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   2801 
   2802 #ifdef VK_USE_PLATFORM_VI_NN
   2803   enum class ViSurfaceCreateFlagBitsNN
   2804   {
   2805   };
   2806 #endif /*VK_USE_PLATFORM_VI_NN*/
   2807 
   2808 #ifdef VK_USE_PLATFORM_VI_NN
   2809   using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
   2810 #endif /*VK_USE_PLATFORM_VI_NN*/
   2811 
   2812 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   2813   enum class WaylandSurfaceCreateFlagBitsKHR
   2814   {
   2815   };
   2816 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   2817 
   2818 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   2819   using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
   2820 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   2821 
   2822 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2823   enum class Win32SurfaceCreateFlagBitsKHR
   2824   {
   2825   };
   2826 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2827 
   2828 #ifdef VK_USE_PLATFORM_WIN32_KHR
   2829   using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
   2830 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   2831 
   2832 #ifdef VK_USE_PLATFORM_XLIB_KHR
   2833   enum class XlibSurfaceCreateFlagBitsKHR
   2834   {
   2835   };
   2836 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   2837 
   2838 #ifdef VK_USE_PLATFORM_XLIB_KHR
   2839   using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
   2840 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   2841 
   2842 #ifdef VK_USE_PLATFORM_XCB_KHR
   2843   enum class XcbSurfaceCreateFlagBitsKHR
   2844   {
   2845   };
   2846 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   2847 
   2848 #ifdef VK_USE_PLATFORM_XCB_KHR
   2849   using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
   2850 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   2851 
   2852 #ifdef VK_USE_PLATFORM_IOS_MVK
   2853   enum class IOSSurfaceCreateFlagBitsMVK
   2854   {
   2855   };
   2856 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   2857 
   2858 #ifdef VK_USE_PLATFORM_IOS_MVK
   2859   using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
   2860 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   2861 
   2862 #ifdef VK_USE_PLATFORM_MACOS_MVK
   2863   enum class MacOSSurfaceCreateFlagBitsMVK
   2864   {
   2865   };
   2866 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   2867 
   2868 #ifdef VK_USE_PLATFORM_MACOS_MVK
   2869   using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
   2870 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   2871 
   2872 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   2873   enum class ImagePipeSurfaceCreateFlagBitsFUCHSIA
   2874   {
   2875   };
   2876 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   2877 
   2878 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   2879   using ImagePipeSurfaceCreateFlagsFUCHSIA = Flags<ImagePipeSurfaceCreateFlagBitsFUCHSIA, VkImagePipeSurfaceCreateFlagsFUCHSIA>;
   2880 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   2881 
   2882   enum class CommandPoolTrimFlagBits
   2883   {
   2884   };
   2885 
   2886   using CommandPoolTrimFlags = Flags<CommandPoolTrimFlagBits, VkCommandPoolTrimFlags>;
   2887 
   2888   using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags;
   2889 
   2890   enum class PipelineViewportSwizzleStateCreateFlagBitsNV
   2891   {
   2892   };
   2893 
   2894   using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
   2895 
   2896   enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
   2897   {
   2898   };
   2899 
   2900   using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
   2901 
   2902   enum class PipelineCoverageToColorStateCreateFlagBitsNV
   2903   {
   2904   };
   2905 
   2906   using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
   2907 
   2908   enum class PipelineCoverageModulationStateCreateFlagBitsNV
   2909   {
   2910   };
   2911 
   2912   using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
   2913 
   2914   enum class ValidationCacheCreateFlagBitsEXT
   2915   {
   2916   };
   2917 
   2918   using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
   2919 
   2920   enum class DebugUtilsMessengerCreateFlagBitsEXT
   2921   {
   2922   };
   2923 
   2924   using DebugUtilsMessengerCreateFlagsEXT = Flags<DebugUtilsMessengerCreateFlagBitsEXT, VkDebugUtilsMessengerCreateFlagsEXT>;
   2925 
   2926   enum class DebugUtilsMessengerCallbackDataFlagBitsEXT
   2927   {
   2928   };
   2929 
   2930   using DebugUtilsMessengerCallbackDataFlagsEXT = Flags<DebugUtilsMessengerCallbackDataFlagBitsEXT, VkDebugUtilsMessengerCallbackDataFlagsEXT>;
   2931 
   2932   enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT
   2933   {
   2934   };
   2935 
   2936   using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags<PipelineRasterizationConservativeStateCreateFlagBitsEXT, VkPipelineRasterizationConservativeStateCreateFlagsEXT>;
   2937 
   2938   enum class PipelineRasterizationStateStreamCreateFlagBitsEXT
   2939   {
   2940   };
   2941 
   2942   using PipelineRasterizationStateStreamCreateFlagsEXT = Flags<PipelineRasterizationStateStreamCreateFlagBitsEXT, VkPipelineRasterizationStateStreamCreateFlagsEXT>;
   2943 
   2944   class DeviceMemory
   2945   {
   2946   public:
   2947     VULKAN_HPP_CONSTEXPR DeviceMemory()
   2948       : m_deviceMemory(VK_NULL_HANDLE)
   2949     {}
   2950 
   2951     VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t )
   2952       : m_deviceMemory(VK_NULL_HANDLE)
   2953     {}
   2954 
   2955     VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
   2956       : m_deviceMemory( deviceMemory )
   2957     {}
   2958 
   2959 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   2960     DeviceMemory & operator=(VkDeviceMemory deviceMemory)
   2961     {
   2962       m_deviceMemory = deviceMemory;
   2963       return *this;
   2964     }
   2965 #endif
   2966 
   2967     DeviceMemory & operator=( std::nullptr_t )
   2968     {
   2969       m_deviceMemory = VK_NULL_HANDLE;
   2970       return *this;
   2971     }
   2972 
   2973     bool operator==( DeviceMemory const & rhs ) const
   2974     {
   2975       return m_deviceMemory == rhs.m_deviceMemory;
   2976     }
   2977 
   2978     bool operator!=(DeviceMemory const & rhs ) const
   2979     {
   2980       return m_deviceMemory != rhs.m_deviceMemory;
   2981     }
   2982 
   2983     bool operator<(DeviceMemory const & rhs ) const
   2984     {
   2985       return m_deviceMemory < rhs.m_deviceMemory;
   2986     }
   2987 
   2988 
   2989 
   2990     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
   2991     {
   2992       return m_deviceMemory;
   2993     }
   2994 
   2995     explicit operator bool() const
   2996     {
   2997       return m_deviceMemory != VK_NULL_HANDLE;
   2998     }
   2999 
   3000     bool operator!() const
   3001     {
   3002       return m_deviceMemory == VK_NULL_HANDLE;
   3003     }
   3004 
   3005   private:
   3006     VkDeviceMemory m_deviceMemory;
   3007   };
   3008 
   3009   static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
   3010 
   3011   class CommandPool
   3012   {
   3013   public:
   3014     VULKAN_HPP_CONSTEXPR CommandPool()
   3015       : m_commandPool(VK_NULL_HANDLE)
   3016     {}
   3017 
   3018     VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t )
   3019       : m_commandPool(VK_NULL_HANDLE)
   3020     {}
   3021 
   3022     VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
   3023       : m_commandPool( commandPool )
   3024     {}
   3025 
   3026 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3027     CommandPool & operator=(VkCommandPool commandPool)
   3028     {
   3029       m_commandPool = commandPool;
   3030       return *this;
   3031     }
   3032 #endif
   3033 
   3034     CommandPool & operator=( std::nullptr_t )
   3035     {
   3036       m_commandPool = VK_NULL_HANDLE;
   3037       return *this;
   3038     }
   3039 
   3040     bool operator==( CommandPool const & rhs ) const
   3041     {
   3042       return m_commandPool == rhs.m_commandPool;
   3043     }
   3044 
   3045     bool operator!=(CommandPool const & rhs ) const
   3046     {
   3047       return m_commandPool != rhs.m_commandPool;
   3048     }
   3049 
   3050     bool operator<(CommandPool const & rhs ) const
   3051     {
   3052       return m_commandPool < rhs.m_commandPool;
   3053     }
   3054 
   3055 
   3056 
   3057     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
   3058     {
   3059       return m_commandPool;
   3060     }
   3061 
   3062     explicit operator bool() const
   3063     {
   3064       return m_commandPool != VK_NULL_HANDLE;
   3065     }
   3066 
   3067     bool operator!() const
   3068     {
   3069       return m_commandPool == VK_NULL_HANDLE;
   3070     }
   3071 
   3072   private:
   3073     VkCommandPool m_commandPool;
   3074   };
   3075 
   3076   static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
   3077 
   3078   class Buffer
   3079   {
   3080   public:
   3081     VULKAN_HPP_CONSTEXPR Buffer()
   3082       : m_buffer(VK_NULL_HANDLE)
   3083     {}
   3084 
   3085     VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t )
   3086       : m_buffer(VK_NULL_HANDLE)
   3087     {}
   3088 
   3089     VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
   3090       : m_buffer( buffer )
   3091     {}
   3092 
   3093 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3094     Buffer & operator=(VkBuffer buffer)
   3095     {
   3096       m_buffer = buffer;
   3097       return *this;
   3098     }
   3099 #endif
   3100 
   3101     Buffer & operator=( std::nullptr_t )
   3102     {
   3103       m_buffer = VK_NULL_HANDLE;
   3104       return *this;
   3105     }
   3106 
   3107     bool operator==( Buffer const & rhs ) const
   3108     {
   3109       return m_buffer == rhs.m_buffer;
   3110     }
   3111 
   3112     bool operator!=(Buffer const & rhs ) const
   3113     {
   3114       return m_buffer != rhs.m_buffer;
   3115     }
   3116 
   3117     bool operator<(Buffer const & rhs ) const
   3118     {
   3119       return m_buffer < rhs.m_buffer;
   3120     }
   3121 
   3122 
   3123 
   3124     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
   3125     {
   3126       return m_buffer;
   3127     }
   3128 
   3129     explicit operator bool() const
   3130     {
   3131       return m_buffer != VK_NULL_HANDLE;
   3132     }
   3133 
   3134     bool operator!() const
   3135     {
   3136       return m_buffer == VK_NULL_HANDLE;
   3137     }
   3138 
   3139   private:
   3140     VkBuffer m_buffer;
   3141   };
   3142 
   3143   static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
   3144 
   3145   class BufferView
   3146   {
   3147   public:
   3148     VULKAN_HPP_CONSTEXPR BufferView()
   3149       : m_bufferView(VK_NULL_HANDLE)
   3150     {}
   3151 
   3152     VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t )
   3153       : m_bufferView(VK_NULL_HANDLE)
   3154     {}
   3155 
   3156     VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
   3157       : m_bufferView( bufferView )
   3158     {}
   3159 
   3160 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3161     BufferView & operator=(VkBufferView bufferView)
   3162     {
   3163       m_bufferView = bufferView;
   3164       return *this;
   3165     }
   3166 #endif
   3167 
   3168     BufferView & operator=( std::nullptr_t )
   3169     {
   3170       m_bufferView = VK_NULL_HANDLE;
   3171       return *this;
   3172     }
   3173 
   3174     bool operator==( BufferView const & rhs ) const
   3175     {
   3176       return m_bufferView == rhs.m_bufferView;
   3177     }
   3178 
   3179     bool operator!=(BufferView const & rhs ) const
   3180     {
   3181       return m_bufferView != rhs.m_bufferView;
   3182     }
   3183 
   3184     bool operator<(BufferView const & rhs ) const
   3185     {
   3186       return m_bufferView < rhs.m_bufferView;
   3187     }
   3188 
   3189 
   3190 
   3191     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
   3192     {
   3193       return m_bufferView;
   3194     }
   3195 
   3196     explicit operator bool() const
   3197     {
   3198       return m_bufferView != VK_NULL_HANDLE;
   3199     }
   3200 
   3201     bool operator!() const
   3202     {
   3203       return m_bufferView == VK_NULL_HANDLE;
   3204     }
   3205 
   3206   private:
   3207     VkBufferView m_bufferView;
   3208   };
   3209 
   3210   static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
   3211 
   3212   class Image
   3213   {
   3214   public:
   3215     VULKAN_HPP_CONSTEXPR Image()
   3216       : m_image(VK_NULL_HANDLE)
   3217     {}
   3218 
   3219     VULKAN_HPP_CONSTEXPR Image( std::nullptr_t )
   3220       : m_image(VK_NULL_HANDLE)
   3221     {}
   3222 
   3223     VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
   3224       : m_image( image )
   3225     {}
   3226 
   3227 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3228     Image & operator=(VkImage image)
   3229     {
   3230       m_image = image;
   3231       return *this;
   3232     }
   3233 #endif
   3234 
   3235     Image & operator=( std::nullptr_t )
   3236     {
   3237       m_image = VK_NULL_HANDLE;
   3238       return *this;
   3239     }
   3240 
   3241     bool operator==( Image const & rhs ) const
   3242     {
   3243       return m_image == rhs.m_image;
   3244     }
   3245 
   3246     bool operator!=(Image const & rhs ) const
   3247     {
   3248       return m_image != rhs.m_image;
   3249     }
   3250 
   3251     bool operator<(Image const & rhs ) const
   3252     {
   3253       return m_image < rhs.m_image;
   3254     }
   3255 
   3256 
   3257 
   3258     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
   3259     {
   3260       return m_image;
   3261     }
   3262 
   3263     explicit operator bool() const
   3264     {
   3265       return m_image != VK_NULL_HANDLE;
   3266     }
   3267 
   3268     bool operator!() const
   3269     {
   3270       return m_image == VK_NULL_HANDLE;
   3271     }
   3272 
   3273   private:
   3274     VkImage m_image;
   3275   };
   3276 
   3277   static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
   3278 
   3279   class ImageView
   3280   {
   3281   public:
   3282     VULKAN_HPP_CONSTEXPR ImageView()
   3283       : m_imageView(VK_NULL_HANDLE)
   3284     {}
   3285 
   3286     VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t )
   3287       : m_imageView(VK_NULL_HANDLE)
   3288     {}
   3289 
   3290     VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
   3291       : m_imageView( imageView )
   3292     {}
   3293 
   3294 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3295     ImageView & operator=(VkImageView imageView)
   3296     {
   3297       m_imageView = imageView;
   3298       return *this;
   3299     }
   3300 #endif
   3301 
   3302     ImageView & operator=( std::nullptr_t )
   3303     {
   3304       m_imageView = VK_NULL_HANDLE;
   3305       return *this;
   3306     }
   3307 
   3308     bool operator==( ImageView const & rhs ) const
   3309     {
   3310       return m_imageView == rhs.m_imageView;
   3311     }
   3312 
   3313     bool operator!=(ImageView const & rhs ) const
   3314     {
   3315       return m_imageView != rhs.m_imageView;
   3316     }
   3317 
   3318     bool operator<(ImageView const & rhs ) const
   3319     {
   3320       return m_imageView < rhs.m_imageView;
   3321     }
   3322 
   3323 
   3324 
   3325     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
   3326     {
   3327       return m_imageView;
   3328     }
   3329 
   3330     explicit operator bool() const
   3331     {
   3332       return m_imageView != VK_NULL_HANDLE;
   3333     }
   3334 
   3335     bool operator!() const
   3336     {
   3337       return m_imageView == VK_NULL_HANDLE;
   3338     }
   3339 
   3340   private:
   3341     VkImageView m_imageView;
   3342   };
   3343 
   3344   static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
   3345 
   3346   class ShaderModule
   3347   {
   3348   public:
   3349     VULKAN_HPP_CONSTEXPR ShaderModule()
   3350       : m_shaderModule(VK_NULL_HANDLE)
   3351     {}
   3352 
   3353     VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t )
   3354       : m_shaderModule(VK_NULL_HANDLE)
   3355     {}
   3356 
   3357     VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
   3358       : m_shaderModule( shaderModule )
   3359     {}
   3360 
   3361 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3362     ShaderModule & operator=(VkShaderModule shaderModule)
   3363     {
   3364       m_shaderModule = shaderModule;
   3365       return *this;
   3366     }
   3367 #endif
   3368 
   3369     ShaderModule & operator=( std::nullptr_t )
   3370     {
   3371       m_shaderModule = VK_NULL_HANDLE;
   3372       return *this;
   3373     }
   3374 
   3375     bool operator==( ShaderModule const & rhs ) const
   3376     {
   3377       return m_shaderModule == rhs.m_shaderModule;
   3378     }
   3379 
   3380     bool operator!=(ShaderModule const & rhs ) const
   3381     {
   3382       return m_shaderModule != rhs.m_shaderModule;
   3383     }
   3384 
   3385     bool operator<(ShaderModule const & rhs ) const
   3386     {
   3387       return m_shaderModule < rhs.m_shaderModule;
   3388     }
   3389 
   3390 
   3391 
   3392     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
   3393     {
   3394       return m_shaderModule;
   3395     }
   3396 
   3397     explicit operator bool() const
   3398     {
   3399       return m_shaderModule != VK_NULL_HANDLE;
   3400     }
   3401 
   3402     bool operator!() const
   3403     {
   3404       return m_shaderModule == VK_NULL_HANDLE;
   3405     }
   3406 
   3407   private:
   3408     VkShaderModule m_shaderModule;
   3409   };
   3410 
   3411   static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
   3412 
   3413   class Pipeline
   3414   {
   3415   public:
   3416     VULKAN_HPP_CONSTEXPR Pipeline()
   3417       : m_pipeline(VK_NULL_HANDLE)
   3418     {}
   3419 
   3420     VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t )
   3421       : m_pipeline(VK_NULL_HANDLE)
   3422     {}
   3423 
   3424     VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
   3425       : m_pipeline( pipeline )
   3426     {}
   3427 
   3428 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3429     Pipeline & operator=(VkPipeline pipeline)
   3430     {
   3431       m_pipeline = pipeline;
   3432       return *this;
   3433     }
   3434 #endif
   3435 
   3436     Pipeline & operator=( std::nullptr_t )
   3437     {
   3438       m_pipeline = VK_NULL_HANDLE;
   3439       return *this;
   3440     }
   3441 
   3442     bool operator==( Pipeline const & rhs ) const
   3443     {
   3444       return m_pipeline == rhs.m_pipeline;
   3445     }
   3446 
   3447     bool operator!=(Pipeline const & rhs ) const
   3448     {
   3449       return m_pipeline != rhs.m_pipeline;
   3450     }
   3451 
   3452     bool operator<(Pipeline const & rhs ) const
   3453     {
   3454       return m_pipeline < rhs.m_pipeline;
   3455     }
   3456 
   3457 
   3458 
   3459     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
   3460     {
   3461       return m_pipeline;
   3462     }
   3463 
   3464     explicit operator bool() const
   3465     {
   3466       return m_pipeline != VK_NULL_HANDLE;
   3467     }
   3468 
   3469     bool operator!() const
   3470     {
   3471       return m_pipeline == VK_NULL_HANDLE;
   3472     }
   3473 
   3474   private:
   3475     VkPipeline m_pipeline;
   3476   };
   3477 
   3478   static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
   3479 
   3480   class PipelineLayout
   3481   {
   3482   public:
   3483     VULKAN_HPP_CONSTEXPR PipelineLayout()
   3484       : m_pipelineLayout(VK_NULL_HANDLE)
   3485     {}
   3486 
   3487     VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t )
   3488       : m_pipelineLayout(VK_NULL_HANDLE)
   3489     {}
   3490 
   3491     VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
   3492       : m_pipelineLayout( pipelineLayout )
   3493     {}
   3494 
   3495 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3496     PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
   3497     {
   3498       m_pipelineLayout = pipelineLayout;
   3499       return *this;
   3500     }
   3501 #endif
   3502 
   3503     PipelineLayout & operator=( std::nullptr_t )
   3504     {
   3505       m_pipelineLayout = VK_NULL_HANDLE;
   3506       return *this;
   3507     }
   3508 
   3509     bool operator==( PipelineLayout const & rhs ) const
   3510     {
   3511       return m_pipelineLayout == rhs.m_pipelineLayout;
   3512     }
   3513 
   3514     bool operator!=(PipelineLayout const & rhs ) const
   3515     {
   3516       return m_pipelineLayout != rhs.m_pipelineLayout;
   3517     }
   3518 
   3519     bool operator<(PipelineLayout const & rhs ) const
   3520     {
   3521       return m_pipelineLayout < rhs.m_pipelineLayout;
   3522     }
   3523 
   3524 
   3525 
   3526     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
   3527     {
   3528       return m_pipelineLayout;
   3529     }
   3530 
   3531     explicit operator bool() const
   3532     {
   3533       return m_pipelineLayout != VK_NULL_HANDLE;
   3534     }
   3535 
   3536     bool operator!() const
   3537     {
   3538       return m_pipelineLayout == VK_NULL_HANDLE;
   3539     }
   3540 
   3541   private:
   3542     VkPipelineLayout m_pipelineLayout;
   3543   };
   3544 
   3545   static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
   3546 
   3547   class Sampler
   3548   {
   3549   public:
   3550     VULKAN_HPP_CONSTEXPR Sampler()
   3551       : m_sampler(VK_NULL_HANDLE)
   3552     {}
   3553 
   3554     VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t )
   3555       : m_sampler(VK_NULL_HANDLE)
   3556     {}
   3557 
   3558     VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
   3559       : m_sampler( sampler )
   3560     {}
   3561 
   3562 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3563     Sampler & operator=(VkSampler sampler)
   3564     {
   3565       m_sampler = sampler;
   3566       return *this;
   3567     }
   3568 #endif
   3569 
   3570     Sampler & operator=( std::nullptr_t )
   3571     {
   3572       m_sampler = VK_NULL_HANDLE;
   3573       return *this;
   3574     }
   3575 
   3576     bool operator==( Sampler const & rhs ) const
   3577     {
   3578       return m_sampler == rhs.m_sampler;
   3579     }
   3580 
   3581     bool operator!=(Sampler const & rhs ) const
   3582     {
   3583       return m_sampler != rhs.m_sampler;
   3584     }
   3585 
   3586     bool operator<(Sampler const & rhs ) const
   3587     {
   3588       return m_sampler < rhs.m_sampler;
   3589     }
   3590 
   3591 
   3592 
   3593     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
   3594     {
   3595       return m_sampler;
   3596     }
   3597 
   3598     explicit operator bool() const
   3599     {
   3600       return m_sampler != VK_NULL_HANDLE;
   3601     }
   3602 
   3603     bool operator!() const
   3604     {
   3605       return m_sampler == VK_NULL_HANDLE;
   3606     }
   3607 
   3608   private:
   3609     VkSampler m_sampler;
   3610   };
   3611 
   3612   static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
   3613 
   3614   class DescriptorSet
   3615   {
   3616   public:
   3617     VULKAN_HPP_CONSTEXPR DescriptorSet()
   3618       : m_descriptorSet(VK_NULL_HANDLE)
   3619     {}
   3620 
   3621     VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t )
   3622       : m_descriptorSet(VK_NULL_HANDLE)
   3623     {}
   3624 
   3625     VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
   3626       : m_descriptorSet( descriptorSet )
   3627     {}
   3628 
   3629 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3630     DescriptorSet & operator=(VkDescriptorSet descriptorSet)
   3631     {
   3632       m_descriptorSet = descriptorSet;
   3633       return *this;
   3634     }
   3635 #endif
   3636 
   3637     DescriptorSet & operator=( std::nullptr_t )
   3638     {
   3639       m_descriptorSet = VK_NULL_HANDLE;
   3640       return *this;
   3641     }
   3642 
   3643     bool operator==( DescriptorSet const & rhs ) const
   3644     {
   3645       return m_descriptorSet == rhs.m_descriptorSet;
   3646     }
   3647 
   3648     bool operator!=(DescriptorSet const & rhs ) const
   3649     {
   3650       return m_descriptorSet != rhs.m_descriptorSet;
   3651     }
   3652 
   3653     bool operator<(DescriptorSet const & rhs ) const
   3654     {
   3655       return m_descriptorSet < rhs.m_descriptorSet;
   3656     }
   3657 
   3658 
   3659 
   3660     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
   3661     {
   3662       return m_descriptorSet;
   3663     }
   3664 
   3665     explicit operator bool() const
   3666     {
   3667       return m_descriptorSet != VK_NULL_HANDLE;
   3668     }
   3669 
   3670     bool operator!() const
   3671     {
   3672       return m_descriptorSet == VK_NULL_HANDLE;
   3673     }
   3674 
   3675   private:
   3676     VkDescriptorSet m_descriptorSet;
   3677   };
   3678 
   3679   static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
   3680 
   3681   class DescriptorSetLayout
   3682   {
   3683   public:
   3684     VULKAN_HPP_CONSTEXPR DescriptorSetLayout()
   3685       : m_descriptorSetLayout(VK_NULL_HANDLE)
   3686     {}
   3687 
   3688     VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t )
   3689       : m_descriptorSetLayout(VK_NULL_HANDLE)
   3690     {}
   3691 
   3692     VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
   3693       : m_descriptorSetLayout( descriptorSetLayout )
   3694     {}
   3695 
   3696 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3697     DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
   3698     {
   3699       m_descriptorSetLayout = descriptorSetLayout;
   3700       return *this;
   3701     }
   3702 #endif
   3703 
   3704     DescriptorSetLayout & operator=( std::nullptr_t )
   3705     {
   3706       m_descriptorSetLayout = VK_NULL_HANDLE;
   3707       return *this;
   3708     }
   3709 
   3710     bool operator==( DescriptorSetLayout const & rhs ) const
   3711     {
   3712       return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
   3713     }
   3714 
   3715     bool operator!=(DescriptorSetLayout const & rhs ) const
   3716     {
   3717       return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
   3718     }
   3719 
   3720     bool operator<(DescriptorSetLayout const & rhs ) const
   3721     {
   3722       return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
   3723     }
   3724 
   3725 
   3726 
   3727     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
   3728     {
   3729       return m_descriptorSetLayout;
   3730     }
   3731 
   3732     explicit operator bool() const
   3733     {
   3734       return m_descriptorSetLayout != VK_NULL_HANDLE;
   3735     }
   3736 
   3737     bool operator!() const
   3738     {
   3739       return m_descriptorSetLayout == VK_NULL_HANDLE;
   3740     }
   3741 
   3742   private:
   3743     VkDescriptorSetLayout m_descriptorSetLayout;
   3744   };
   3745 
   3746   static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
   3747 
   3748   class DescriptorPool
   3749   {
   3750   public:
   3751     VULKAN_HPP_CONSTEXPR DescriptorPool()
   3752       : m_descriptorPool(VK_NULL_HANDLE)
   3753     {}
   3754 
   3755     VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t )
   3756       : m_descriptorPool(VK_NULL_HANDLE)
   3757     {}
   3758 
   3759     VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
   3760       : m_descriptorPool( descriptorPool )
   3761     {}
   3762 
   3763 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3764     DescriptorPool & operator=(VkDescriptorPool descriptorPool)
   3765     {
   3766       m_descriptorPool = descriptorPool;
   3767       return *this;
   3768     }
   3769 #endif
   3770 
   3771     DescriptorPool & operator=( std::nullptr_t )
   3772     {
   3773       m_descriptorPool = VK_NULL_HANDLE;
   3774       return *this;
   3775     }
   3776 
   3777     bool operator==( DescriptorPool const & rhs ) const
   3778     {
   3779       return m_descriptorPool == rhs.m_descriptorPool;
   3780     }
   3781 
   3782     bool operator!=(DescriptorPool const & rhs ) const
   3783     {
   3784       return m_descriptorPool != rhs.m_descriptorPool;
   3785     }
   3786 
   3787     bool operator<(DescriptorPool const & rhs ) const
   3788     {
   3789       return m_descriptorPool < rhs.m_descriptorPool;
   3790     }
   3791 
   3792 
   3793 
   3794     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
   3795     {
   3796       return m_descriptorPool;
   3797     }
   3798 
   3799     explicit operator bool() const
   3800     {
   3801       return m_descriptorPool != VK_NULL_HANDLE;
   3802     }
   3803 
   3804     bool operator!() const
   3805     {
   3806       return m_descriptorPool == VK_NULL_HANDLE;
   3807     }
   3808 
   3809   private:
   3810     VkDescriptorPool m_descriptorPool;
   3811   };
   3812 
   3813   static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
   3814 
   3815   class Fence
   3816   {
   3817   public:
   3818     VULKAN_HPP_CONSTEXPR Fence()
   3819       : m_fence(VK_NULL_HANDLE)
   3820     {}
   3821 
   3822     VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t )
   3823       : m_fence(VK_NULL_HANDLE)
   3824     {}
   3825 
   3826     VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
   3827       : m_fence( fence )
   3828     {}
   3829 
   3830 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3831     Fence & operator=(VkFence fence)
   3832     {
   3833       m_fence = fence;
   3834       return *this;
   3835     }
   3836 #endif
   3837 
   3838     Fence & operator=( std::nullptr_t )
   3839     {
   3840       m_fence = VK_NULL_HANDLE;
   3841       return *this;
   3842     }
   3843 
   3844     bool operator==( Fence const & rhs ) const
   3845     {
   3846       return m_fence == rhs.m_fence;
   3847     }
   3848 
   3849     bool operator!=(Fence const & rhs ) const
   3850     {
   3851       return m_fence != rhs.m_fence;
   3852     }
   3853 
   3854     bool operator<(Fence const & rhs ) const
   3855     {
   3856       return m_fence < rhs.m_fence;
   3857     }
   3858 
   3859 
   3860 
   3861     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
   3862     {
   3863       return m_fence;
   3864     }
   3865 
   3866     explicit operator bool() const
   3867     {
   3868       return m_fence != VK_NULL_HANDLE;
   3869     }
   3870 
   3871     bool operator!() const
   3872     {
   3873       return m_fence == VK_NULL_HANDLE;
   3874     }
   3875 
   3876   private:
   3877     VkFence m_fence;
   3878   };
   3879 
   3880   static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
   3881 
   3882   class Semaphore
   3883   {
   3884   public:
   3885     VULKAN_HPP_CONSTEXPR Semaphore()
   3886       : m_semaphore(VK_NULL_HANDLE)
   3887     {}
   3888 
   3889     VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t )
   3890       : m_semaphore(VK_NULL_HANDLE)
   3891     {}
   3892 
   3893     VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
   3894       : m_semaphore( semaphore )
   3895     {}
   3896 
   3897 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3898     Semaphore & operator=(VkSemaphore semaphore)
   3899     {
   3900       m_semaphore = semaphore;
   3901       return *this;
   3902     }
   3903 #endif
   3904 
   3905     Semaphore & operator=( std::nullptr_t )
   3906     {
   3907       m_semaphore = VK_NULL_HANDLE;
   3908       return *this;
   3909     }
   3910 
   3911     bool operator==( Semaphore const & rhs ) const
   3912     {
   3913       return m_semaphore == rhs.m_semaphore;
   3914     }
   3915 
   3916     bool operator!=(Semaphore const & rhs ) const
   3917     {
   3918       return m_semaphore != rhs.m_semaphore;
   3919     }
   3920 
   3921     bool operator<(Semaphore const & rhs ) const
   3922     {
   3923       return m_semaphore < rhs.m_semaphore;
   3924     }
   3925 
   3926 
   3927 
   3928     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
   3929     {
   3930       return m_semaphore;
   3931     }
   3932 
   3933     explicit operator bool() const
   3934     {
   3935       return m_semaphore != VK_NULL_HANDLE;
   3936     }
   3937 
   3938     bool operator!() const
   3939     {
   3940       return m_semaphore == VK_NULL_HANDLE;
   3941     }
   3942 
   3943   private:
   3944     VkSemaphore m_semaphore;
   3945   };
   3946 
   3947   static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
   3948 
   3949   class Event
   3950   {
   3951   public:
   3952     VULKAN_HPP_CONSTEXPR Event()
   3953       : m_event(VK_NULL_HANDLE)
   3954     {}
   3955 
   3956     VULKAN_HPP_CONSTEXPR Event( std::nullptr_t )
   3957       : m_event(VK_NULL_HANDLE)
   3958     {}
   3959 
   3960     VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
   3961       : m_event( event )
   3962     {}
   3963 
   3964 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   3965     Event & operator=(VkEvent event)
   3966     {
   3967       m_event = event;
   3968       return *this;
   3969     }
   3970 #endif
   3971 
   3972     Event & operator=( std::nullptr_t )
   3973     {
   3974       m_event = VK_NULL_HANDLE;
   3975       return *this;
   3976     }
   3977 
   3978     bool operator==( Event const & rhs ) const
   3979     {
   3980       return m_event == rhs.m_event;
   3981     }
   3982 
   3983     bool operator!=(Event const & rhs ) const
   3984     {
   3985       return m_event != rhs.m_event;
   3986     }
   3987 
   3988     bool operator<(Event const & rhs ) const
   3989     {
   3990       return m_event < rhs.m_event;
   3991     }
   3992 
   3993 
   3994 
   3995     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
   3996     {
   3997       return m_event;
   3998     }
   3999 
   4000     explicit operator bool() const
   4001     {
   4002       return m_event != VK_NULL_HANDLE;
   4003     }
   4004 
   4005     bool operator!() const
   4006     {
   4007       return m_event == VK_NULL_HANDLE;
   4008     }
   4009 
   4010   private:
   4011     VkEvent m_event;
   4012   };
   4013 
   4014   static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
   4015 
   4016   class QueryPool
   4017   {
   4018   public:
   4019     VULKAN_HPP_CONSTEXPR QueryPool()
   4020       : m_queryPool(VK_NULL_HANDLE)
   4021     {}
   4022 
   4023     VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t )
   4024       : m_queryPool(VK_NULL_HANDLE)
   4025     {}
   4026 
   4027     VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
   4028       : m_queryPool( queryPool )
   4029     {}
   4030 
   4031 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4032     QueryPool & operator=(VkQueryPool queryPool)
   4033     {
   4034       m_queryPool = queryPool;
   4035       return *this;
   4036     }
   4037 #endif
   4038 
   4039     QueryPool & operator=( std::nullptr_t )
   4040     {
   4041       m_queryPool = VK_NULL_HANDLE;
   4042       return *this;
   4043     }
   4044 
   4045     bool operator==( QueryPool const & rhs ) const
   4046     {
   4047       return m_queryPool == rhs.m_queryPool;
   4048     }
   4049 
   4050     bool operator!=(QueryPool const & rhs ) const
   4051     {
   4052       return m_queryPool != rhs.m_queryPool;
   4053     }
   4054 
   4055     bool operator<(QueryPool const & rhs ) const
   4056     {
   4057       return m_queryPool < rhs.m_queryPool;
   4058     }
   4059 
   4060 
   4061 
   4062     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
   4063     {
   4064       return m_queryPool;
   4065     }
   4066 
   4067     explicit operator bool() const
   4068     {
   4069       return m_queryPool != VK_NULL_HANDLE;
   4070     }
   4071 
   4072     bool operator!() const
   4073     {
   4074       return m_queryPool == VK_NULL_HANDLE;
   4075     }
   4076 
   4077   private:
   4078     VkQueryPool m_queryPool;
   4079   };
   4080 
   4081   static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
   4082 
   4083   class Framebuffer
   4084   {
   4085   public:
   4086     VULKAN_HPP_CONSTEXPR Framebuffer()
   4087       : m_framebuffer(VK_NULL_HANDLE)
   4088     {}
   4089 
   4090     VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t )
   4091       : m_framebuffer(VK_NULL_HANDLE)
   4092     {}
   4093 
   4094     VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
   4095       : m_framebuffer( framebuffer )
   4096     {}
   4097 
   4098 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4099     Framebuffer & operator=(VkFramebuffer framebuffer)
   4100     {
   4101       m_framebuffer = framebuffer;
   4102       return *this;
   4103     }
   4104 #endif
   4105 
   4106     Framebuffer & operator=( std::nullptr_t )
   4107     {
   4108       m_framebuffer = VK_NULL_HANDLE;
   4109       return *this;
   4110     }
   4111 
   4112     bool operator==( Framebuffer const & rhs ) const
   4113     {
   4114       return m_framebuffer == rhs.m_framebuffer;
   4115     }
   4116 
   4117     bool operator!=(Framebuffer const & rhs ) const
   4118     {
   4119       return m_framebuffer != rhs.m_framebuffer;
   4120     }
   4121 
   4122     bool operator<(Framebuffer const & rhs ) const
   4123     {
   4124       return m_framebuffer < rhs.m_framebuffer;
   4125     }
   4126 
   4127 
   4128 
   4129     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
   4130     {
   4131       return m_framebuffer;
   4132     }
   4133 
   4134     explicit operator bool() const
   4135     {
   4136       return m_framebuffer != VK_NULL_HANDLE;
   4137     }
   4138 
   4139     bool operator!() const
   4140     {
   4141       return m_framebuffer == VK_NULL_HANDLE;
   4142     }
   4143 
   4144   private:
   4145     VkFramebuffer m_framebuffer;
   4146   };
   4147 
   4148   static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
   4149 
   4150   class RenderPass
   4151   {
   4152   public:
   4153     VULKAN_HPP_CONSTEXPR RenderPass()
   4154       : m_renderPass(VK_NULL_HANDLE)
   4155     {}
   4156 
   4157     VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t )
   4158       : m_renderPass(VK_NULL_HANDLE)
   4159     {}
   4160 
   4161     VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
   4162       : m_renderPass( renderPass )
   4163     {}
   4164 
   4165 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4166     RenderPass & operator=(VkRenderPass renderPass)
   4167     {
   4168       m_renderPass = renderPass;
   4169       return *this;
   4170     }
   4171 #endif
   4172 
   4173     RenderPass & operator=( std::nullptr_t )
   4174     {
   4175       m_renderPass = VK_NULL_HANDLE;
   4176       return *this;
   4177     }
   4178 
   4179     bool operator==( RenderPass const & rhs ) const
   4180     {
   4181       return m_renderPass == rhs.m_renderPass;
   4182     }
   4183 
   4184     bool operator!=(RenderPass const & rhs ) const
   4185     {
   4186       return m_renderPass != rhs.m_renderPass;
   4187     }
   4188 
   4189     bool operator<(RenderPass const & rhs ) const
   4190     {
   4191       return m_renderPass < rhs.m_renderPass;
   4192     }
   4193 
   4194 
   4195 
   4196     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
   4197     {
   4198       return m_renderPass;
   4199     }
   4200 
   4201     explicit operator bool() const
   4202     {
   4203       return m_renderPass != VK_NULL_HANDLE;
   4204     }
   4205 
   4206     bool operator!() const
   4207     {
   4208       return m_renderPass == VK_NULL_HANDLE;
   4209     }
   4210 
   4211   private:
   4212     VkRenderPass m_renderPass;
   4213   };
   4214 
   4215   static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
   4216 
   4217   class PipelineCache
   4218   {
   4219   public:
   4220     VULKAN_HPP_CONSTEXPR PipelineCache()
   4221       : m_pipelineCache(VK_NULL_HANDLE)
   4222     {}
   4223 
   4224     VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t )
   4225       : m_pipelineCache(VK_NULL_HANDLE)
   4226     {}
   4227 
   4228     VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
   4229       : m_pipelineCache( pipelineCache )
   4230     {}
   4231 
   4232 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4233     PipelineCache & operator=(VkPipelineCache pipelineCache)
   4234     {
   4235       m_pipelineCache = pipelineCache;
   4236       return *this;
   4237     }
   4238 #endif
   4239 
   4240     PipelineCache & operator=( std::nullptr_t )
   4241     {
   4242       m_pipelineCache = VK_NULL_HANDLE;
   4243       return *this;
   4244     }
   4245 
   4246     bool operator==( PipelineCache const & rhs ) const
   4247     {
   4248       return m_pipelineCache == rhs.m_pipelineCache;
   4249     }
   4250 
   4251     bool operator!=(PipelineCache const & rhs ) const
   4252     {
   4253       return m_pipelineCache != rhs.m_pipelineCache;
   4254     }
   4255 
   4256     bool operator<(PipelineCache const & rhs ) const
   4257     {
   4258       return m_pipelineCache < rhs.m_pipelineCache;
   4259     }
   4260 
   4261 
   4262 
   4263     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
   4264     {
   4265       return m_pipelineCache;
   4266     }
   4267 
   4268     explicit operator bool() const
   4269     {
   4270       return m_pipelineCache != VK_NULL_HANDLE;
   4271     }
   4272 
   4273     bool operator!() const
   4274     {
   4275       return m_pipelineCache == VK_NULL_HANDLE;
   4276     }
   4277 
   4278   private:
   4279     VkPipelineCache m_pipelineCache;
   4280   };
   4281 
   4282   static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
   4283 
   4284   class ObjectTableNVX
   4285   {
   4286   public:
   4287     VULKAN_HPP_CONSTEXPR ObjectTableNVX()
   4288       : m_objectTableNVX(VK_NULL_HANDLE)
   4289     {}
   4290 
   4291     VULKAN_HPP_CONSTEXPR ObjectTableNVX( std::nullptr_t )
   4292       : m_objectTableNVX(VK_NULL_HANDLE)
   4293     {}
   4294 
   4295     VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
   4296       : m_objectTableNVX( objectTableNVX )
   4297     {}
   4298 
   4299 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4300     ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
   4301     {
   4302       m_objectTableNVX = objectTableNVX;
   4303       return *this;
   4304     }
   4305 #endif
   4306 
   4307     ObjectTableNVX & operator=( std::nullptr_t )
   4308     {
   4309       m_objectTableNVX = VK_NULL_HANDLE;
   4310       return *this;
   4311     }
   4312 
   4313     bool operator==( ObjectTableNVX const & rhs ) const
   4314     {
   4315       return m_objectTableNVX == rhs.m_objectTableNVX;
   4316     }
   4317 
   4318     bool operator!=(ObjectTableNVX const & rhs ) const
   4319     {
   4320       return m_objectTableNVX != rhs.m_objectTableNVX;
   4321     }
   4322 
   4323     bool operator<(ObjectTableNVX const & rhs ) const
   4324     {
   4325       return m_objectTableNVX < rhs.m_objectTableNVX;
   4326     }
   4327 
   4328 
   4329 
   4330     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
   4331     {
   4332       return m_objectTableNVX;
   4333     }
   4334 
   4335     explicit operator bool() const
   4336     {
   4337       return m_objectTableNVX != VK_NULL_HANDLE;
   4338     }
   4339 
   4340     bool operator!() const
   4341     {
   4342       return m_objectTableNVX == VK_NULL_HANDLE;
   4343     }
   4344 
   4345   private:
   4346     VkObjectTableNVX m_objectTableNVX;
   4347   };
   4348 
   4349   static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
   4350 
   4351   class IndirectCommandsLayoutNVX
   4352   {
   4353   public:
   4354     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX()
   4355       : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
   4356     {}
   4357 
   4358     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX( std::nullptr_t )
   4359       : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
   4360     {}
   4361 
   4362     VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
   4363       : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
   4364     {}
   4365 
   4366 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4367     IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
   4368     {
   4369       m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
   4370       return *this;
   4371     }
   4372 #endif
   4373 
   4374     IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
   4375     {
   4376       m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
   4377       return *this;
   4378     }
   4379 
   4380     bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
   4381     {
   4382       return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
   4383     }
   4384 
   4385     bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
   4386     {
   4387       return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
   4388     }
   4389 
   4390     bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
   4391     {
   4392       return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
   4393     }
   4394 
   4395 
   4396 
   4397     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
   4398     {
   4399       return m_indirectCommandsLayoutNVX;
   4400     }
   4401 
   4402     explicit operator bool() const
   4403     {
   4404       return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
   4405     }
   4406 
   4407     bool operator!() const
   4408     {
   4409       return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
   4410     }
   4411 
   4412   private:
   4413     VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
   4414   };
   4415 
   4416   static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
   4417 
   4418   class DescriptorUpdateTemplate
   4419   {
   4420   public:
   4421     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate()
   4422       : m_descriptorUpdateTemplate(VK_NULL_HANDLE)
   4423     {}
   4424 
   4425     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t )
   4426       : m_descriptorUpdateTemplate(VK_NULL_HANDLE)
   4427     {}
   4428 
   4429     VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate )
   4430       : m_descriptorUpdateTemplate( descriptorUpdateTemplate )
   4431     {}
   4432 
   4433 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4434     DescriptorUpdateTemplate & operator=(VkDescriptorUpdateTemplate descriptorUpdateTemplate)
   4435     {
   4436       m_descriptorUpdateTemplate = descriptorUpdateTemplate;
   4437       return *this;
   4438     }
   4439 #endif
   4440 
   4441     DescriptorUpdateTemplate & operator=( std::nullptr_t )
   4442     {
   4443       m_descriptorUpdateTemplate = VK_NULL_HANDLE;
   4444       return *this;
   4445     }
   4446 
   4447     bool operator==( DescriptorUpdateTemplate const & rhs ) const
   4448     {
   4449       return m_descriptorUpdateTemplate == rhs.m_descriptorUpdateTemplate;
   4450     }
   4451 
   4452     bool operator!=(DescriptorUpdateTemplate const & rhs ) const
   4453     {
   4454       return m_descriptorUpdateTemplate != rhs.m_descriptorUpdateTemplate;
   4455     }
   4456 
   4457     bool operator<(DescriptorUpdateTemplate const & rhs ) const
   4458     {
   4459       return m_descriptorUpdateTemplate < rhs.m_descriptorUpdateTemplate;
   4460     }
   4461 
   4462 
   4463 
   4464     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplate() const
   4465     {
   4466       return m_descriptorUpdateTemplate;
   4467     }
   4468 
   4469     explicit operator bool() const
   4470     {
   4471       return m_descriptorUpdateTemplate != VK_NULL_HANDLE;
   4472     }
   4473 
   4474     bool operator!() const
   4475     {
   4476       return m_descriptorUpdateTemplate == VK_NULL_HANDLE;
   4477     }
   4478 
   4479   private:
   4480     VkDescriptorUpdateTemplate m_descriptorUpdateTemplate;
   4481   };
   4482 
   4483   static_assert( sizeof( DescriptorUpdateTemplate ) == sizeof( VkDescriptorUpdateTemplate ), "handle and wrapper have different size!" );
   4484 
   4485   using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate;
   4486 
   4487   class SamplerYcbcrConversion
   4488   {
   4489   public:
   4490     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion()
   4491       : m_samplerYcbcrConversion(VK_NULL_HANDLE)
   4492     {}
   4493 
   4494     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t )
   4495       : m_samplerYcbcrConversion(VK_NULL_HANDLE)
   4496     {}
   4497 
   4498     VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion )
   4499       : m_samplerYcbcrConversion( samplerYcbcrConversion )
   4500     {}
   4501 
   4502 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4503     SamplerYcbcrConversion & operator=(VkSamplerYcbcrConversion samplerYcbcrConversion)
   4504     {
   4505       m_samplerYcbcrConversion = samplerYcbcrConversion;
   4506       return *this;
   4507     }
   4508 #endif
   4509 
   4510     SamplerYcbcrConversion & operator=( std::nullptr_t )
   4511     {
   4512       m_samplerYcbcrConversion = VK_NULL_HANDLE;
   4513       return *this;
   4514     }
   4515 
   4516     bool operator==( SamplerYcbcrConversion const & rhs ) const
   4517     {
   4518       return m_samplerYcbcrConversion == rhs.m_samplerYcbcrConversion;
   4519     }
   4520 
   4521     bool operator!=(SamplerYcbcrConversion const & rhs ) const
   4522     {
   4523       return m_samplerYcbcrConversion != rhs.m_samplerYcbcrConversion;
   4524     }
   4525 
   4526     bool operator<(SamplerYcbcrConversion const & rhs ) const
   4527     {
   4528       return m_samplerYcbcrConversion < rhs.m_samplerYcbcrConversion;
   4529     }
   4530 
   4531 
   4532 
   4533     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversion() const
   4534     {
   4535       return m_samplerYcbcrConversion;
   4536     }
   4537 
   4538     explicit operator bool() const
   4539     {
   4540       return m_samplerYcbcrConversion != VK_NULL_HANDLE;
   4541     }
   4542 
   4543     bool operator!() const
   4544     {
   4545       return m_samplerYcbcrConversion == VK_NULL_HANDLE;
   4546     }
   4547 
   4548   private:
   4549     VkSamplerYcbcrConversion m_samplerYcbcrConversion;
   4550   };
   4551 
   4552   static_assert( sizeof( SamplerYcbcrConversion ) == sizeof( VkSamplerYcbcrConversion ), "handle and wrapper have different size!" );
   4553 
   4554   using SamplerYcbcrConversionKHR = SamplerYcbcrConversion;
   4555 
   4556   class ValidationCacheEXT
   4557   {
   4558   public:
   4559     VULKAN_HPP_CONSTEXPR ValidationCacheEXT()
   4560       : m_validationCacheEXT(VK_NULL_HANDLE)
   4561     {}
   4562 
   4563     VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t )
   4564       : m_validationCacheEXT(VK_NULL_HANDLE)
   4565     {}
   4566 
   4567     VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
   4568       : m_validationCacheEXT( validationCacheEXT )
   4569     {}
   4570 
   4571 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4572     ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
   4573     {
   4574       m_validationCacheEXT = validationCacheEXT;
   4575       return *this;
   4576     }
   4577 #endif
   4578 
   4579     ValidationCacheEXT & operator=( std::nullptr_t )
   4580     {
   4581       m_validationCacheEXT = VK_NULL_HANDLE;
   4582       return *this;
   4583     }
   4584 
   4585     bool operator==( ValidationCacheEXT const & rhs ) const
   4586     {
   4587       return m_validationCacheEXT == rhs.m_validationCacheEXT;
   4588     }
   4589 
   4590     bool operator!=(ValidationCacheEXT const & rhs ) const
   4591     {
   4592       return m_validationCacheEXT != rhs.m_validationCacheEXT;
   4593     }
   4594 
   4595     bool operator<(ValidationCacheEXT const & rhs ) const
   4596     {
   4597       return m_validationCacheEXT < rhs.m_validationCacheEXT;
   4598     }
   4599 
   4600 
   4601 
   4602     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
   4603     {
   4604       return m_validationCacheEXT;
   4605     }
   4606 
   4607     explicit operator bool() const
   4608     {
   4609       return m_validationCacheEXT != VK_NULL_HANDLE;
   4610     }
   4611 
   4612     bool operator!() const
   4613     {
   4614       return m_validationCacheEXT == VK_NULL_HANDLE;
   4615     }
   4616 
   4617   private:
   4618     VkValidationCacheEXT m_validationCacheEXT;
   4619   };
   4620 
   4621   static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
   4622 
   4623   class AccelerationStructureNV
   4624   {
   4625   public:
   4626     VULKAN_HPP_CONSTEXPR AccelerationStructureNV()
   4627       : m_accelerationStructureNV(VK_NULL_HANDLE)
   4628     {}
   4629 
   4630     VULKAN_HPP_CONSTEXPR AccelerationStructureNV( std::nullptr_t )
   4631       : m_accelerationStructureNV(VK_NULL_HANDLE)
   4632     {}
   4633 
   4634     VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureNV( VkAccelerationStructureNV accelerationStructureNV )
   4635       : m_accelerationStructureNV( accelerationStructureNV )
   4636     {}
   4637 
   4638 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4639     AccelerationStructureNV & operator=(VkAccelerationStructureNV accelerationStructureNV)
   4640     {
   4641       m_accelerationStructureNV = accelerationStructureNV;
   4642       return *this;
   4643     }
   4644 #endif
   4645 
   4646     AccelerationStructureNV & operator=( std::nullptr_t )
   4647     {
   4648       m_accelerationStructureNV = VK_NULL_HANDLE;
   4649       return *this;
   4650     }
   4651 
   4652     bool operator==( AccelerationStructureNV const & rhs ) const
   4653     {
   4654       return m_accelerationStructureNV == rhs.m_accelerationStructureNV;
   4655     }
   4656 
   4657     bool operator!=(AccelerationStructureNV const & rhs ) const
   4658     {
   4659       return m_accelerationStructureNV != rhs.m_accelerationStructureNV;
   4660     }
   4661 
   4662     bool operator<(AccelerationStructureNV const & rhs ) const
   4663     {
   4664       return m_accelerationStructureNV < rhs.m_accelerationStructureNV;
   4665     }
   4666 
   4667 
   4668 
   4669     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureNV() const
   4670     {
   4671       return m_accelerationStructureNV;
   4672     }
   4673 
   4674     explicit operator bool() const
   4675     {
   4676       return m_accelerationStructureNV != VK_NULL_HANDLE;
   4677     }
   4678 
   4679     bool operator!() const
   4680     {
   4681       return m_accelerationStructureNV == VK_NULL_HANDLE;
   4682     }
   4683 
   4684   private:
   4685     VkAccelerationStructureNV m_accelerationStructureNV;
   4686   };
   4687 
   4688   static_assert( sizeof( AccelerationStructureNV ) == sizeof( VkAccelerationStructureNV ), "handle and wrapper have different size!" );
   4689 
   4690   class DisplayKHR
   4691   {
   4692   public:
   4693     VULKAN_HPP_CONSTEXPR DisplayKHR()
   4694       : m_displayKHR(VK_NULL_HANDLE)
   4695     {}
   4696 
   4697     VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t )
   4698       : m_displayKHR(VK_NULL_HANDLE)
   4699     {}
   4700 
   4701     VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
   4702       : m_displayKHR( displayKHR )
   4703     {}
   4704 
   4705 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4706     DisplayKHR & operator=(VkDisplayKHR displayKHR)
   4707     {
   4708       m_displayKHR = displayKHR;
   4709       return *this;
   4710     }
   4711 #endif
   4712 
   4713     DisplayKHR & operator=( std::nullptr_t )
   4714     {
   4715       m_displayKHR = VK_NULL_HANDLE;
   4716       return *this;
   4717     }
   4718 
   4719     bool operator==( DisplayKHR const & rhs ) const
   4720     {
   4721       return m_displayKHR == rhs.m_displayKHR;
   4722     }
   4723 
   4724     bool operator!=(DisplayKHR const & rhs ) const
   4725     {
   4726       return m_displayKHR != rhs.m_displayKHR;
   4727     }
   4728 
   4729     bool operator<(DisplayKHR const & rhs ) const
   4730     {
   4731       return m_displayKHR < rhs.m_displayKHR;
   4732     }
   4733 
   4734 
   4735 
   4736     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
   4737     {
   4738       return m_displayKHR;
   4739     }
   4740 
   4741     explicit operator bool() const
   4742     {
   4743       return m_displayKHR != VK_NULL_HANDLE;
   4744     }
   4745 
   4746     bool operator!() const
   4747     {
   4748       return m_displayKHR == VK_NULL_HANDLE;
   4749     }
   4750 
   4751   private:
   4752     VkDisplayKHR m_displayKHR;
   4753   };
   4754 
   4755   static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
   4756 
   4757   class DisplayModeKHR
   4758   {
   4759   public:
   4760     VULKAN_HPP_CONSTEXPR DisplayModeKHR()
   4761       : m_displayModeKHR(VK_NULL_HANDLE)
   4762     {}
   4763 
   4764     VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t )
   4765       : m_displayModeKHR(VK_NULL_HANDLE)
   4766     {}
   4767 
   4768     VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
   4769       : m_displayModeKHR( displayModeKHR )
   4770     {}
   4771 
   4772 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4773     DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
   4774     {
   4775       m_displayModeKHR = displayModeKHR;
   4776       return *this;
   4777     }
   4778 #endif
   4779 
   4780     DisplayModeKHR & operator=( std::nullptr_t )
   4781     {
   4782       m_displayModeKHR = VK_NULL_HANDLE;
   4783       return *this;
   4784     }
   4785 
   4786     bool operator==( DisplayModeKHR const & rhs ) const
   4787     {
   4788       return m_displayModeKHR == rhs.m_displayModeKHR;
   4789     }
   4790 
   4791     bool operator!=(DisplayModeKHR const & rhs ) const
   4792     {
   4793       return m_displayModeKHR != rhs.m_displayModeKHR;
   4794     }
   4795 
   4796     bool operator<(DisplayModeKHR const & rhs ) const
   4797     {
   4798       return m_displayModeKHR < rhs.m_displayModeKHR;
   4799     }
   4800 
   4801 
   4802 
   4803     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
   4804     {
   4805       return m_displayModeKHR;
   4806     }
   4807 
   4808     explicit operator bool() const
   4809     {
   4810       return m_displayModeKHR != VK_NULL_HANDLE;
   4811     }
   4812 
   4813     bool operator!() const
   4814     {
   4815       return m_displayModeKHR == VK_NULL_HANDLE;
   4816     }
   4817 
   4818   private:
   4819     VkDisplayModeKHR m_displayModeKHR;
   4820   };
   4821 
   4822   static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
   4823 
   4824   class SurfaceKHR
   4825   {
   4826   public:
   4827     VULKAN_HPP_CONSTEXPR SurfaceKHR()
   4828       : m_surfaceKHR(VK_NULL_HANDLE)
   4829     {}
   4830 
   4831     VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t )
   4832       : m_surfaceKHR(VK_NULL_HANDLE)
   4833     {}
   4834 
   4835     VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
   4836       : m_surfaceKHR( surfaceKHR )
   4837     {}
   4838 
   4839 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4840     SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
   4841     {
   4842       m_surfaceKHR = surfaceKHR;
   4843       return *this;
   4844     }
   4845 #endif
   4846 
   4847     SurfaceKHR & operator=( std::nullptr_t )
   4848     {
   4849       m_surfaceKHR = VK_NULL_HANDLE;
   4850       return *this;
   4851     }
   4852 
   4853     bool operator==( SurfaceKHR const & rhs ) const
   4854     {
   4855       return m_surfaceKHR == rhs.m_surfaceKHR;
   4856     }
   4857 
   4858     bool operator!=(SurfaceKHR const & rhs ) const
   4859     {
   4860       return m_surfaceKHR != rhs.m_surfaceKHR;
   4861     }
   4862 
   4863     bool operator<(SurfaceKHR const & rhs ) const
   4864     {
   4865       return m_surfaceKHR < rhs.m_surfaceKHR;
   4866     }
   4867 
   4868 
   4869 
   4870     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
   4871     {
   4872       return m_surfaceKHR;
   4873     }
   4874 
   4875     explicit operator bool() const
   4876     {
   4877       return m_surfaceKHR != VK_NULL_HANDLE;
   4878     }
   4879 
   4880     bool operator!() const
   4881     {
   4882       return m_surfaceKHR == VK_NULL_HANDLE;
   4883     }
   4884 
   4885   private:
   4886     VkSurfaceKHR m_surfaceKHR;
   4887   };
   4888 
   4889   static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
   4890 
   4891   class SwapchainKHR
   4892   {
   4893   public:
   4894     VULKAN_HPP_CONSTEXPR SwapchainKHR()
   4895       : m_swapchainKHR(VK_NULL_HANDLE)
   4896     {}
   4897 
   4898     VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t )
   4899       : m_swapchainKHR(VK_NULL_HANDLE)
   4900     {}
   4901 
   4902     VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
   4903       : m_swapchainKHR( swapchainKHR )
   4904     {}
   4905 
   4906 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4907     SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
   4908     {
   4909       m_swapchainKHR = swapchainKHR;
   4910       return *this;
   4911     }
   4912 #endif
   4913 
   4914     SwapchainKHR & operator=( std::nullptr_t )
   4915     {
   4916       m_swapchainKHR = VK_NULL_HANDLE;
   4917       return *this;
   4918     }
   4919 
   4920     bool operator==( SwapchainKHR const & rhs ) const
   4921     {
   4922       return m_swapchainKHR == rhs.m_swapchainKHR;
   4923     }
   4924 
   4925     bool operator!=(SwapchainKHR const & rhs ) const
   4926     {
   4927       return m_swapchainKHR != rhs.m_swapchainKHR;
   4928     }
   4929 
   4930     bool operator<(SwapchainKHR const & rhs ) const
   4931     {
   4932       return m_swapchainKHR < rhs.m_swapchainKHR;
   4933     }
   4934 
   4935 
   4936 
   4937     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
   4938     {
   4939       return m_swapchainKHR;
   4940     }
   4941 
   4942     explicit operator bool() const
   4943     {
   4944       return m_swapchainKHR != VK_NULL_HANDLE;
   4945     }
   4946 
   4947     bool operator!() const
   4948     {
   4949       return m_swapchainKHR == VK_NULL_HANDLE;
   4950     }
   4951 
   4952   private:
   4953     VkSwapchainKHR m_swapchainKHR;
   4954   };
   4955 
   4956   static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
   4957 
   4958   class DebugReportCallbackEXT
   4959   {
   4960   public:
   4961     VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT()
   4962       : m_debugReportCallbackEXT(VK_NULL_HANDLE)
   4963     {}
   4964 
   4965     VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t )
   4966       : m_debugReportCallbackEXT(VK_NULL_HANDLE)
   4967     {}
   4968 
   4969     VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
   4970       : m_debugReportCallbackEXT( debugReportCallbackEXT )
   4971     {}
   4972 
   4973 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   4974     DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
   4975     {
   4976       m_debugReportCallbackEXT = debugReportCallbackEXT;
   4977       return *this;
   4978     }
   4979 #endif
   4980 
   4981     DebugReportCallbackEXT & operator=( std::nullptr_t )
   4982     {
   4983       m_debugReportCallbackEXT = VK_NULL_HANDLE;
   4984       return *this;
   4985     }
   4986 
   4987     bool operator==( DebugReportCallbackEXT const & rhs ) const
   4988     {
   4989       return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
   4990     }
   4991 
   4992     bool operator!=(DebugReportCallbackEXT const & rhs ) const
   4993     {
   4994       return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
   4995     }
   4996 
   4997     bool operator<(DebugReportCallbackEXT const & rhs ) const
   4998     {
   4999       return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
   5000     }
   5001 
   5002 
   5003 
   5004     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
   5005     {
   5006       return m_debugReportCallbackEXT;
   5007     }
   5008 
   5009     explicit operator bool() const
   5010     {
   5011       return m_debugReportCallbackEXT != VK_NULL_HANDLE;
   5012     }
   5013 
   5014     bool operator!() const
   5015     {
   5016       return m_debugReportCallbackEXT == VK_NULL_HANDLE;
   5017     }
   5018 
   5019   private:
   5020     VkDebugReportCallbackEXT m_debugReportCallbackEXT;
   5021   };
   5022 
   5023   static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
   5024 
   5025   class DebugUtilsMessengerEXT
   5026   {
   5027   public:
   5028     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT()
   5029       : m_debugUtilsMessengerEXT(VK_NULL_HANDLE)
   5030     {}
   5031 
   5032     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t )
   5033       : m_debugUtilsMessengerEXT(VK_NULL_HANDLE)
   5034     {}
   5035 
   5036     VULKAN_HPP_TYPESAFE_EXPLICIT DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT )
   5037       : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT )
   5038     {}
   5039 
   5040 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   5041     DebugUtilsMessengerEXT & operator=(VkDebugUtilsMessengerEXT debugUtilsMessengerEXT)
   5042     {
   5043       m_debugUtilsMessengerEXT = debugUtilsMessengerEXT;
   5044       return *this;
   5045     }
   5046 #endif
   5047 
   5048     DebugUtilsMessengerEXT & operator=( std::nullptr_t )
   5049     {
   5050       m_debugUtilsMessengerEXT = VK_NULL_HANDLE;
   5051       return *this;
   5052     }
   5053 
   5054     bool operator==( DebugUtilsMessengerEXT const & rhs ) const
   5055     {
   5056       return m_debugUtilsMessengerEXT == rhs.m_debugUtilsMessengerEXT;
   5057     }
   5058 
   5059     bool operator!=(DebugUtilsMessengerEXT const & rhs ) const
   5060     {
   5061       return m_debugUtilsMessengerEXT != rhs.m_debugUtilsMessengerEXT;
   5062     }
   5063 
   5064     bool operator<(DebugUtilsMessengerEXT const & rhs ) const
   5065     {
   5066       return m_debugUtilsMessengerEXT < rhs.m_debugUtilsMessengerEXT;
   5067     }
   5068 
   5069 
   5070 
   5071     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugUtilsMessengerEXT() const
   5072     {
   5073       return m_debugUtilsMessengerEXT;
   5074     }
   5075 
   5076     explicit operator bool() const
   5077     {
   5078       return m_debugUtilsMessengerEXT != VK_NULL_HANDLE;
   5079     }
   5080 
   5081     bool operator!() const
   5082     {
   5083       return m_debugUtilsMessengerEXT == VK_NULL_HANDLE;
   5084     }
   5085 
   5086   private:
   5087     VkDebugUtilsMessengerEXT m_debugUtilsMessengerEXT;
   5088   };
   5089 
   5090   static_assert( sizeof( DebugUtilsMessengerEXT ) == sizeof( VkDebugUtilsMessengerEXT ), "handle and wrapper have different size!" );
   5091 
   5092   struct Offset2D
   5093   {
   5094     Offset2D( int32_t x_ = 0,
   5095               int32_t y_ = 0 )
   5096       : x( x_ )
   5097       , y( y_ )
   5098     {
   5099     }
   5100 
   5101     Offset2D( VkOffset2D const & rhs )
   5102     {
   5103       memcpy( this, &rhs, sizeof( Offset2D ) );
   5104     }
   5105 
   5106     Offset2D& operator=( VkOffset2D const & rhs )
   5107     {
   5108       memcpy( this, &rhs, sizeof( Offset2D ) );
   5109       return *this;
   5110     }
   5111     Offset2D& setX( int32_t x_ )
   5112     {
   5113       x = x_;
   5114       return *this;
   5115     }
   5116 
   5117     Offset2D& setY( int32_t y_ )
   5118     {
   5119       y = y_;
   5120       return *this;
   5121     }
   5122 
   5123     operator VkOffset2D const&() const
   5124     {
   5125       return *reinterpret_cast<const VkOffset2D*>(this);
   5126     }
   5127 
   5128     operator VkOffset2D &()
   5129     {
   5130       return *reinterpret_cast<VkOffset2D*>(this);
   5131     }
   5132 
   5133     bool operator==( Offset2D const& rhs ) const
   5134     {
   5135       return ( x == rhs.x )
   5136           && ( y == rhs.y );
   5137     }
   5138 
   5139     bool operator!=( Offset2D const& rhs ) const
   5140     {
   5141       return !operator==( rhs );
   5142     }
   5143 
   5144     int32_t x;
   5145     int32_t y;
   5146   };
   5147   static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
   5148 
   5149   struct Offset3D
   5150   {
   5151     Offset3D( int32_t x_ = 0,
   5152               int32_t y_ = 0,
   5153               int32_t z_ = 0 )
   5154       : x( x_ )
   5155       , y( y_ )
   5156       , z( z_ )
   5157     {
   5158     }
   5159 
   5160     explicit Offset3D( Offset2D const& offset2D,
   5161                        int32_t z_ = 0 )
   5162       : x( offset2D.x )
   5163       , y( offset2D.y )
   5164       , z( z_ )
   5165     {}
   5166 
   5167     Offset3D( VkOffset3D const & rhs )
   5168     {
   5169       memcpy( this, &rhs, sizeof( Offset3D ) );
   5170     }
   5171 
   5172     Offset3D& operator=( VkOffset3D const & rhs )
   5173     {
   5174       memcpy( this, &rhs, sizeof( Offset3D ) );
   5175       return *this;
   5176     }
   5177     Offset3D& setX( int32_t x_ )
   5178     {
   5179       x = x_;
   5180       return *this;
   5181     }
   5182 
   5183     Offset3D& setY( int32_t y_ )
   5184     {
   5185       y = y_;
   5186       return *this;
   5187     }
   5188 
   5189     Offset3D& setZ( int32_t z_ )
   5190     {
   5191       z = z_;
   5192       return *this;
   5193     }
   5194 
   5195     operator VkOffset3D const&() const
   5196     {
   5197       return *reinterpret_cast<const VkOffset3D*>(this);
   5198     }
   5199 
   5200     operator VkOffset3D &()
   5201     {
   5202       return *reinterpret_cast<VkOffset3D*>(this);
   5203     }
   5204 
   5205     bool operator==( Offset3D const& rhs ) const
   5206     {
   5207       return ( x == rhs.x )
   5208           && ( y == rhs.y )
   5209           && ( z == rhs.z );
   5210     }
   5211 
   5212     bool operator!=( Offset3D const& rhs ) const
   5213     {
   5214       return !operator==( rhs );
   5215     }
   5216 
   5217     int32_t x;
   5218     int32_t y;
   5219     int32_t z;
   5220   };
   5221   static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
   5222 
   5223   struct Extent2D
   5224   {
   5225     Extent2D( uint32_t width_ = 0,
   5226               uint32_t height_ = 0 )
   5227       : width( width_ )
   5228       , height( height_ )
   5229     {
   5230     }
   5231 
   5232     Extent2D( VkExtent2D const & rhs )
   5233     {
   5234       memcpy( this, &rhs, sizeof( Extent2D ) );
   5235     }
   5236 
   5237     Extent2D& operator=( VkExtent2D const & rhs )
   5238     {
   5239       memcpy( this, &rhs, sizeof( Extent2D ) );
   5240       return *this;
   5241     }
   5242     Extent2D& setWidth( uint32_t width_ )
   5243     {
   5244       width = width_;
   5245       return *this;
   5246     }
   5247 
   5248     Extent2D& setHeight( uint32_t height_ )
   5249     {
   5250       height = height_;
   5251       return *this;
   5252     }
   5253 
   5254     operator VkExtent2D const&() const
   5255     {
   5256       return *reinterpret_cast<const VkExtent2D*>(this);
   5257     }
   5258 
   5259     operator VkExtent2D &()
   5260     {
   5261       return *reinterpret_cast<VkExtent2D*>(this);
   5262     }
   5263 
   5264     bool operator==( Extent2D const& rhs ) const
   5265     {
   5266       return ( width == rhs.width )
   5267           && ( height == rhs.height );
   5268     }
   5269 
   5270     bool operator!=( Extent2D const& rhs ) const
   5271     {
   5272       return !operator==( rhs );
   5273     }
   5274 
   5275     uint32_t width;
   5276     uint32_t height;
   5277   };
   5278   static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
   5279 
   5280   struct Extent3D
   5281   {
   5282     Extent3D( uint32_t width_ = 0,
   5283               uint32_t height_ = 0,
   5284               uint32_t depth_ = 0 )
   5285       : width( width_ )
   5286       , height( height_ )
   5287       , depth( depth_ )
   5288     {
   5289     }
   5290 
   5291     explicit Extent3D( Extent2D const& extent2D,
   5292                        uint32_t depth_ = 0 )
   5293       : width( extent2D.width )
   5294       , height( extent2D.height )
   5295       , depth( depth_ )
   5296     {}
   5297 
   5298     Extent3D( VkExtent3D const & rhs )
   5299     {
   5300       memcpy( this, &rhs, sizeof( Extent3D ) );
   5301     }
   5302 
   5303     Extent3D& operator=( VkExtent3D const & rhs )
   5304     {
   5305       memcpy( this, &rhs, sizeof( Extent3D ) );
   5306       return *this;
   5307     }
   5308     Extent3D& setWidth( uint32_t width_ )
   5309     {
   5310       width = width_;
   5311       return *this;
   5312     }
   5313 
   5314     Extent3D& setHeight( uint32_t height_ )
   5315     {
   5316       height = height_;
   5317       return *this;
   5318     }
   5319 
   5320     Extent3D& setDepth( uint32_t depth_ )
   5321     {
   5322       depth = depth_;
   5323       return *this;
   5324     }
   5325 
   5326     operator VkExtent3D const&() const
   5327     {
   5328       return *reinterpret_cast<const VkExtent3D*>(this);
   5329     }
   5330 
   5331     operator VkExtent3D &()
   5332     {
   5333       return *reinterpret_cast<VkExtent3D*>(this);
   5334     }
   5335 
   5336     bool operator==( Extent3D const& rhs ) const
   5337     {
   5338       return ( width == rhs.width )
   5339           && ( height == rhs.height )
   5340           && ( depth == rhs.depth );
   5341     }
   5342 
   5343     bool operator!=( Extent3D const& rhs ) const
   5344     {
   5345       return !operator==( rhs );
   5346     }
   5347 
   5348     uint32_t width;
   5349     uint32_t height;
   5350     uint32_t depth;
   5351   };
   5352   static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
   5353 
   5354   struct Viewport
   5355   {
   5356     Viewport( float x_ = 0,
   5357               float y_ = 0,
   5358               float width_ = 0,
   5359               float height_ = 0,
   5360               float minDepth_ = 0,
   5361               float maxDepth_ = 0 )
   5362       : x( x_ )
   5363       , y( y_ )
   5364       , width( width_ )
   5365       , height( height_ )
   5366       , minDepth( minDepth_ )
   5367       , maxDepth( maxDepth_ )
   5368     {
   5369     }
   5370 
   5371     Viewport( VkViewport const & rhs )
   5372     {
   5373       memcpy( this, &rhs, sizeof( Viewport ) );
   5374     }
   5375 
   5376     Viewport& operator=( VkViewport const & rhs )
   5377     {
   5378       memcpy( this, &rhs, sizeof( Viewport ) );
   5379       return *this;
   5380     }
   5381     Viewport& setX( float x_ )
   5382     {
   5383       x = x_;
   5384       return *this;
   5385     }
   5386 
   5387     Viewport& setY( float y_ )
   5388     {
   5389       y = y_;
   5390       return *this;
   5391     }
   5392 
   5393     Viewport& setWidth( float width_ )
   5394     {
   5395       width = width_;
   5396       return *this;
   5397     }
   5398 
   5399     Viewport& setHeight( float height_ )
   5400     {
   5401       height = height_;
   5402       return *this;
   5403     }
   5404 
   5405     Viewport& setMinDepth( float minDepth_ )
   5406     {
   5407       minDepth = minDepth_;
   5408       return *this;
   5409     }
   5410 
   5411     Viewport& setMaxDepth( float maxDepth_ )
   5412     {
   5413       maxDepth = maxDepth_;
   5414       return *this;
   5415     }
   5416 
   5417     operator VkViewport const&() const
   5418     {
   5419       return *reinterpret_cast<const VkViewport*>(this);
   5420     }
   5421 
   5422     operator VkViewport &()
   5423     {
   5424       return *reinterpret_cast<VkViewport*>(this);
   5425     }
   5426 
   5427     bool operator==( Viewport const& rhs ) const
   5428     {
   5429       return ( x == rhs.x )
   5430           && ( y == rhs.y )
   5431           && ( width == rhs.width )
   5432           && ( height == rhs.height )
   5433           && ( minDepth == rhs.minDepth )
   5434           && ( maxDepth == rhs.maxDepth );
   5435     }
   5436 
   5437     bool operator!=( Viewport const& rhs ) const
   5438     {
   5439       return !operator==( rhs );
   5440     }
   5441 
   5442     float x;
   5443     float y;
   5444     float width;
   5445     float height;
   5446     float minDepth;
   5447     float maxDepth;
   5448   };
   5449   static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
   5450 
   5451   struct Rect2D
   5452   {
   5453     Rect2D( Offset2D offset_ = Offset2D(),
   5454             Extent2D extent_ = Extent2D() )
   5455       : offset( offset_ )
   5456       , extent( extent_ )
   5457     {
   5458     }
   5459 
   5460     Rect2D( VkRect2D const & rhs )
   5461     {
   5462       memcpy( this, &rhs, sizeof( Rect2D ) );
   5463     }
   5464 
   5465     Rect2D& operator=( VkRect2D const & rhs )
   5466     {
   5467       memcpy( this, &rhs, sizeof( Rect2D ) );
   5468       return *this;
   5469     }
   5470     Rect2D& setOffset( Offset2D offset_ )
   5471     {
   5472       offset = offset_;
   5473       return *this;
   5474     }
   5475 
   5476     Rect2D& setExtent( Extent2D extent_ )
   5477     {
   5478       extent = extent_;
   5479       return *this;
   5480     }
   5481 
   5482     operator VkRect2D const&() const
   5483     {
   5484       return *reinterpret_cast<const VkRect2D*>(this);
   5485     }
   5486 
   5487     operator VkRect2D &()
   5488     {
   5489       return *reinterpret_cast<VkRect2D*>(this);
   5490     }
   5491 
   5492     bool operator==( Rect2D const& rhs ) const
   5493     {
   5494       return ( offset == rhs.offset )
   5495           && ( extent == rhs.extent );
   5496     }
   5497 
   5498     bool operator!=( Rect2D const& rhs ) const
   5499     {
   5500       return !operator==( rhs );
   5501     }
   5502 
   5503     Offset2D offset;
   5504     Extent2D extent;
   5505   };
   5506   static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
   5507 
   5508   struct ClearRect
   5509   {
   5510     ClearRect( Rect2D rect_ = Rect2D(),
   5511                uint32_t baseArrayLayer_ = 0,
   5512                uint32_t layerCount_ = 0 )
   5513       : rect( rect_ )
   5514       , baseArrayLayer( baseArrayLayer_ )
   5515       , layerCount( layerCount_ )
   5516     {
   5517     }
   5518 
   5519     ClearRect( VkClearRect const & rhs )
   5520     {
   5521       memcpy( this, &rhs, sizeof( ClearRect ) );
   5522     }
   5523 
   5524     ClearRect& operator=( VkClearRect const & rhs )
   5525     {
   5526       memcpy( this, &rhs, sizeof( ClearRect ) );
   5527       return *this;
   5528     }
   5529     ClearRect& setRect( Rect2D rect_ )
   5530     {
   5531       rect = rect_;
   5532       return *this;
   5533     }
   5534 
   5535     ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
   5536     {
   5537       baseArrayLayer = baseArrayLayer_;
   5538       return *this;
   5539     }
   5540 
   5541     ClearRect& setLayerCount( uint32_t layerCount_ )
   5542     {
   5543       layerCount = layerCount_;
   5544       return *this;
   5545     }
   5546 
   5547     operator VkClearRect const&() const
   5548     {
   5549       return *reinterpret_cast<const VkClearRect*>(this);
   5550     }
   5551 
   5552     operator VkClearRect &()
   5553     {
   5554       return *reinterpret_cast<VkClearRect*>(this);
   5555     }
   5556 
   5557     bool operator==( ClearRect const& rhs ) const
   5558     {
   5559       return ( rect == rhs.rect )
   5560           && ( baseArrayLayer == rhs.baseArrayLayer )
   5561           && ( layerCount == rhs.layerCount );
   5562     }
   5563 
   5564     bool operator!=( ClearRect const& rhs ) const
   5565     {
   5566       return !operator==( rhs );
   5567     }
   5568 
   5569     Rect2D rect;
   5570     uint32_t baseArrayLayer;
   5571     uint32_t layerCount;
   5572   };
   5573   static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
   5574 
   5575   struct ExtensionProperties
   5576   {
   5577     operator VkExtensionProperties const&() const
   5578     {
   5579       return *reinterpret_cast<const VkExtensionProperties*>(this);
   5580     }
   5581 
   5582     operator VkExtensionProperties &()
   5583     {
   5584       return *reinterpret_cast<VkExtensionProperties*>(this);
   5585     }
   5586 
   5587     bool operator==( ExtensionProperties const& rhs ) const
   5588     {
   5589       return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
   5590           && ( specVersion == rhs.specVersion );
   5591     }
   5592 
   5593     bool operator!=( ExtensionProperties const& rhs ) const
   5594     {
   5595       return !operator==( rhs );
   5596     }
   5597 
   5598     char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
   5599     uint32_t specVersion;
   5600   };
   5601   static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
   5602 
   5603   struct LayerProperties
   5604   {
   5605     operator VkLayerProperties const&() const
   5606     {
   5607       return *reinterpret_cast<const VkLayerProperties*>(this);
   5608     }
   5609 
   5610     operator VkLayerProperties &()
   5611     {
   5612       return *reinterpret_cast<VkLayerProperties*>(this);
   5613     }
   5614 
   5615     bool operator==( LayerProperties const& rhs ) const
   5616     {
   5617       return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
   5618           && ( specVersion == rhs.specVersion )
   5619           && ( implementationVersion == rhs.implementationVersion )
   5620           && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
   5621     }
   5622 
   5623     bool operator!=( LayerProperties const& rhs ) const
   5624     {
   5625       return !operator==( rhs );
   5626     }
   5627 
   5628     char layerName[VK_MAX_EXTENSION_NAME_SIZE];
   5629     uint32_t specVersion;
   5630     uint32_t implementationVersion;
   5631     char description[VK_MAX_DESCRIPTION_SIZE];
   5632   };
   5633   static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
   5634 
   5635   struct AllocationCallbacks
   5636   {
   5637     AllocationCallbacks( void* pUserData_ = nullptr,
   5638                          PFN_vkAllocationFunction pfnAllocation_ = nullptr,
   5639                          PFN_vkReallocationFunction pfnReallocation_ = nullptr,
   5640                          PFN_vkFreeFunction pfnFree_ = nullptr,
   5641                          PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr,
   5642                          PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
   5643       : pUserData( pUserData_ )
   5644       , pfnAllocation( pfnAllocation_ )
   5645       , pfnReallocation( pfnReallocation_ )
   5646       , pfnFree( pfnFree_ )
   5647       , pfnInternalAllocation( pfnInternalAllocation_ )
   5648       , pfnInternalFree( pfnInternalFree_ )
   5649     {
   5650     }
   5651 
   5652     AllocationCallbacks( VkAllocationCallbacks const & rhs )
   5653     {
   5654       memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
   5655     }
   5656 
   5657     AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
   5658     {
   5659       memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
   5660       return *this;
   5661     }
   5662     AllocationCallbacks& setPUserData( void* pUserData_ )
   5663     {
   5664       pUserData = pUserData_;
   5665       return *this;
   5666     }
   5667 
   5668     AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
   5669     {
   5670       pfnAllocation = pfnAllocation_;
   5671       return *this;
   5672     }
   5673 
   5674     AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
   5675     {
   5676       pfnReallocation = pfnReallocation_;
   5677       return *this;
   5678     }
   5679 
   5680     AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
   5681     {
   5682       pfnFree = pfnFree_;
   5683       return *this;
   5684     }
   5685 
   5686     AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
   5687     {
   5688       pfnInternalAllocation = pfnInternalAllocation_;
   5689       return *this;
   5690     }
   5691 
   5692     AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
   5693     {
   5694       pfnInternalFree = pfnInternalFree_;
   5695       return *this;
   5696     }
   5697 
   5698     operator VkAllocationCallbacks const&() const
   5699     {
   5700       return *reinterpret_cast<const VkAllocationCallbacks*>(this);
   5701     }
   5702 
   5703     operator VkAllocationCallbacks &()
   5704     {
   5705       return *reinterpret_cast<VkAllocationCallbacks*>(this);
   5706     }
   5707 
   5708     bool operator==( AllocationCallbacks const& rhs ) const
   5709     {
   5710       return ( pUserData == rhs.pUserData )
   5711           && ( pfnAllocation == rhs.pfnAllocation )
   5712           && ( pfnReallocation == rhs.pfnReallocation )
   5713           && ( pfnFree == rhs.pfnFree )
   5714           && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
   5715           && ( pfnInternalFree == rhs.pfnInternalFree );
   5716     }
   5717 
   5718     bool operator!=( AllocationCallbacks const& rhs ) const
   5719     {
   5720       return !operator==( rhs );
   5721     }
   5722 
   5723     void* pUserData;
   5724     PFN_vkAllocationFunction pfnAllocation;
   5725     PFN_vkReallocationFunction pfnReallocation;
   5726     PFN_vkFreeFunction pfnFree;
   5727     PFN_vkInternalAllocationNotification pfnInternalAllocation;
   5728     PFN_vkInternalFreeNotification pfnInternalFree;
   5729   };
   5730   static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
   5731 
   5732   struct MemoryRequirements
   5733   {
   5734     operator VkMemoryRequirements const&() const
   5735     {
   5736       return *reinterpret_cast<const VkMemoryRequirements*>(this);
   5737     }
   5738 
   5739     operator VkMemoryRequirements &()
   5740     {
   5741       return *reinterpret_cast<VkMemoryRequirements*>(this);
   5742     }
   5743 
   5744     bool operator==( MemoryRequirements const& rhs ) const
   5745     {
   5746       return ( size == rhs.size )
   5747           && ( alignment == rhs.alignment )
   5748           && ( memoryTypeBits == rhs.memoryTypeBits );
   5749     }
   5750 
   5751     bool operator!=( MemoryRequirements const& rhs ) const
   5752     {
   5753       return !operator==( rhs );
   5754     }
   5755 
   5756     DeviceSize size;
   5757     DeviceSize alignment;
   5758     uint32_t memoryTypeBits;
   5759   };
   5760   static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
   5761 
   5762   struct DescriptorBufferInfo
   5763   {
   5764     DescriptorBufferInfo( Buffer buffer_ = Buffer(),
   5765                           DeviceSize offset_ = 0,
   5766                           DeviceSize range_ = 0 )
   5767       : buffer( buffer_ )
   5768       , offset( offset_ )
   5769       , range( range_ )
   5770     {
   5771     }
   5772 
   5773     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
   5774     {
   5775       memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
   5776     }
   5777 
   5778     DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
   5779     {
   5780       memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
   5781       return *this;
   5782     }
   5783     DescriptorBufferInfo& setBuffer( Buffer buffer_ )
   5784     {
   5785       buffer = buffer_;
   5786       return *this;
   5787     }
   5788 
   5789     DescriptorBufferInfo& setOffset( DeviceSize offset_ )
   5790     {
   5791       offset = offset_;
   5792       return *this;
   5793     }
   5794 
   5795     DescriptorBufferInfo& setRange( DeviceSize range_ )
   5796     {
   5797       range = range_;
   5798       return *this;
   5799     }
   5800 
   5801     operator VkDescriptorBufferInfo const&() const
   5802     {
   5803       return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
   5804     }
   5805 
   5806     operator VkDescriptorBufferInfo &()
   5807     {
   5808       return *reinterpret_cast<VkDescriptorBufferInfo*>(this);
   5809     }
   5810 
   5811     bool operator==( DescriptorBufferInfo const& rhs ) const
   5812     {
   5813       return ( buffer == rhs.buffer )
   5814           && ( offset == rhs.offset )
   5815           && ( range == rhs.range );
   5816     }
   5817 
   5818     bool operator!=( DescriptorBufferInfo const& rhs ) const
   5819     {
   5820       return !operator==( rhs );
   5821     }
   5822 
   5823     Buffer buffer;
   5824     DeviceSize offset;
   5825     DeviceSize range;
   5826   };
   5827   static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
   5828 
   5829   struct SubresourceLayout
   5830   {
   5831     operator VkSubresourceLayout const&() const
   5832     {
   5833       return *reinterpret_cast<const VkSubresourceLayout*>(this);
   5834     }
   5835 
   5836     operator VkSubresourceLayout &()
   5837     {
   5838       return *reinterpret_cast<VkSubresourceLayout*>(this);
   5839     }
   5840 
   5841     bool operator==( SubresourceLayout const& rhs ) const
   5842     {
   5843       return ( offset == rhs.offset )
   5844           && ( size == rhs.size )
   5845           && ( rowPitch == rhs.rowPitch )
   5846           && ( arrayPitch == rhs.arrayPitch )
   5847           && ( depthPitch == rhs.depthPitch );
   5848     }
   5849 
   5850     bool operator!=( SubresourceLayout const& rhs ) const
   5851     {
   5852       return !operator==( rhs );
   5853     }
   5854 
   5855     DeviceSize offset;
   5856     DeviceSize size;
   5857     DeviceSize rowPitch;
   5858     DeviceSize arrayPitch;
   5859     DeviceSize depthPitch;
   5860   };
   5861   static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
   5862 
   5863   struct BufferCopy
   5864   {
   5865     BufferCopy( DeviceSize srcOffset_ = 0,
   5866                 DeviceSize dstOffset_ = 0,
   5867                 DeviceSize size_ = 0 )
   5868       : srcOffset( srcOffset_ )
   5869       , dstOffset( dstOffset_ )
   5870       , size( size_ )
   5871     {
   5872     }
   5873 
   5874     BufferCopy( VkBufferCopy const & rhs )
   5875     {
   5876       memcpy( this, &rhs, sizeof( BufferCopy ) );
   5877     }
   5878 
   5879     BufferCopy& operator=( VkBufferCopy const & rhs )
   5880     {
   5881       memcpy( this, &rhs, sizeof( BufferCopy ) );
   5882       return *this;
   5883     }
   5884     BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
   5885     {
   5886       srcOffset = srcOffset_;
   5887       return *this;
   5888     }
   5889 
   5890     BufferCopy& setDstOffset( DeviceSize dstOffset_ )
   5891     {
   5892       dstOffset = dstOffset_;
   5893       return *this;
   5894     }
   5895 
   5896     BufferCopy& setSize( DeviceSize size_ )
   5897     {
   5898       size = size_;
   5899       return *this;
   5900     }
   5901 
   5902     operator VkBufferCopy const&() const
   5903     {
   5904       return *reinterpret_cast<const VkBufferCopy*>(this);
   5905     }
   5906 
   5907     operator VkBufferCopy &()
   5908     {
   5909       return *reinterpret_cast<VkBufferCopy*>(this);
   5910     }
   5911 
   5912     bool operator==( BufferCopy const& rhs ) const
   5913     {
   5914       return ( srcOffset == rhs.srcOffset )
   5915           && ( dstOffset == rhs.dstOffset )
   5916           && ( size == rhs.size );
   5917     }
   5918 
   5919     bool operator!=( BufferCopy const& rhs ) const
   5920     {
   5921       return !operator==( rhs );
   5922     }
   5923 
   5924     DeviceSize srcOffset;
   5925     DeviceSize dstOffset;
   5926     DeviceSize size;
   5927   };
   5928   static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
   5929 
   5930   struct SpecializationMapEntry
   5931   {
   5932     SpecializationMapEntry( uint32_t constantID_ = 0,
   5933                             uint32_t offset_ = 0,
   5934                             size_t size_ = 0 )
   5935       : constantID( constantID_ )
   5936       , offset( offset_ )
   5937       , size( size_ )
   5938     {
   5939     }
   5940 
   5941     SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
   5942     {
   5943       memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
   5944     }
   5945 
   5946     SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
   5947     {
   5948       memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
   5949       return *this;
   5950     }
   5951     SpecializationMapEntry& setConstantID( uint32_t constantID_ )
   5952     {
   5953       constantID = constantID_;
   5954       return *this;
   5955     }
   5956 
   5957     SpecializationMapEntry& setOffset( uint32_t offset_ )
   5958     {
   5959       offset = offset_;
   5960       return *this;
   5961     }
   5962 
   5963     SpecializationMapEntry& setSize( size_t size_ )
   5964     {
   5965       size = size_;
   5966       return *this;
   5967     }
   5968 
   5969     operator VkSpecializationMapEntry const&() const
   5970     {
   5971       return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
   5972     }
   5973 
   5974     operator VkSpecializationMapEntry &()
   5975     {
   5976       return *reinterpret_cast<VkSpecializationMapEntry*>(this);
   5977     }
   5978 
   5979     bool operator==( SpecializationMapEntry const& rhs ) const
   5980     {
   5981       return ( constantID == rhs.constantID )
   5982           && ( offset == rhs.offset )
   5983           && ( size == rhs.size );
   5984     }
   5985 
   5986     bool operator!=( SpecializationMapEntry const& rhs ) const
   5987     {
   5988       return !operator==( rhs );
   5989     }
   5990 
   5991     uint32_t constantID;
   5992     uint32_t offset;
   5993     size_t size;
   5994   };
   5995   static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
   5996 
   5997   struct SpecializationInfo
   5998   {
   5999     SpecializationInfo( uint32_t mapEntryCount_ = 0,
   6000                         const SpecializationMapEntry* pMapEntries_ = nullptr,
   6001                         size_t dataSize_ = 0,
   6002                         const void* pData_ = nullptr )
   6003       : mapEntryCount( mapEntryCount_ )
   6004       , pMapEntries( pMapEntries_ )
   6005       , dataSize( dataSize_ )
   6006       , pData( pData_ )
   6007     {
   6008     }
   6009 
   6010     SpecializationInfo( VkSpecializationInfo const & rhs )
   6011     {
   6012       memcpy( this, &rhs, sizeof( SpecializationInfo ) );
   6013     }
   6014 
   6015     SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
   6016     {
   6017       memcpy( this, &rhs, sizeof( SpecializationInfo ) );
   6018       return *this;
   6019     }
   6020     SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
   6021     {
   6022       mapEntryCount = mapEntryCount_;
   6023       return *this;
   6024     }
   6025 
   6026     SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
   6027     {
   6028       pMapEntries = pMapEntries_;
   6029       return *this;
   6030     }
   6031 
   6032     SpecializationInfo& setDataSize( size_t dataSize_ )
   6033     {
   6034       dataSize = dataSize_;
   6035       return *this;
   6036     }
   6037 
   6038     SpecializationInfo& setPData( const void* pData_ )
   6039     {
   6040       pData = pData_;
   6041       return *this;
   6042     }
   6043 
   6044     operator VkSpecializationInfo const&() const
   6045     {
   6046       return *reinterpret_cast<const VkSpecializationInfo*>(this);
   6047     }
   6048 
   6049     operator VkSpecializationInfo &()
   6050     {
   6051       return *reinterpret_cast<VkSpecializationInfo*>(this);
   6052     }
   6053 
   6054     bool operator==( SpecializationInfo const& rhs ) const
   6055     {
   6056       return ( mapEntryCount == rhs.mapEntryCount )
   6057           && ( pMapEntries == rhs.pMapEntries )
   6058           && ( dataSize == rhs.dataSize )
   6059           && ( pData == rhs.pData );
   6060     }
   6061 
   6062     bool operator!=( SpecializationInfo const& rhs ) const
   6063     {
   6064       return !operator==( rhs );
   6065     }
   6066 
   6067     uint32_t mapEntryCount;
   6068     const SpecializationMapEntry* pMapEntries;
   6069     size_t dataSize;
   6070     const void* pData;
   6071   };
   6072   static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
   6073 
   6074   union ClearColorValue
   6075   {
   6076     ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
   6077     {
   6078       memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
   6079     }
   6080 
   6081     ClearColorValue( const std::array<int32_t,4>& int32_ )
   6082     {
   6083       memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
   6084     }
   6085 
   6086     ClearColorValue( const std::array<uint32_t,4>& uint32_ )
   6087     {
   6088       memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
   6089     }
   6090 
   6091     ClearColorValue& setFloat32( std::array<float,4> float32_ )
   6092     {
   6093       memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
   6094       return *this;
   6095     }
   6096 
   6097     ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
   6098     {
   6099       memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
   6100       return *this;
   6101     }
   6102 
   6103     ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
   6104     {
   6105       memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
   6106       return *this;
   6107     }
   6108 
   6109     operator VkClearColorValue const&() const
   6110     {
   6111       return *reinterpret_cast<const VkClearColorValue*>(this);
   6112     }
   6113 
   6114     operator VkClearColorValue &()
   6115     {
   6116       return *reinterpret_cast<VkClearColorValue*>(this);
   6117     }
   6118 
   6119     float float32[4];
   6120     int32_t int32[4];
   6121     uint32_t uint32[4];
   6122   };
   6123 
   6124   struct ClearDepthStencilValue
   6125   {
   6126     ClearDepthStencilValue( float depth_ = 0,
   6127                             uint32_t stencil_ = 0 )
   6128       : depth( depth_ )
   6129       , stencil( stencil_ )
   6130     {
   6131     }
   6132 
   6133     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
   6134     {
   6135       memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
   6136     }
   6137 
   6138     ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
   6139     {
   6140       memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
   6141       return *this;
   6142     }
   6143     ClearDepthStencilValue& setDepth( float depth_ )
   6144     {
   6145       depth = depth_;
   6146       return *this;
   6147     }
   6148 
   6149     ClearDepthStencilValue& setStencil( uint32_t stencil_ )
   6150     {
   6151       stencil = stencil_;
   6152       return *this;
   6153     }
   6154 
   6155     operator VkClearDepthStencilValue const&() const
   6156     {
   6157       return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
   6158     }
   6159 
   6160     operator VkClearDepthStencilValue &()
   6161     {
   6162       return *reinterpret_cast<VkClearDepthStencilValue*>(this);
   6163     }
   6164 
   6165     bool operator==( ClearDepthStencilValue const& rhs ) const
   6166     {
   6167       return ( depth == rhs.depth )
   6168           && ( stencil == rhs.stencil );
   6169     }
   6170 
   6171     bool operator!=( ClearDepthStencilValue const& rhs ) const
   6172     {
   6173       return !operator==( rhs );
   6174     }
   6175 
   6176     float depth;
   6177     uint32_t stencil;
   6178   };
   6179   static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
   6180 
   6181   union ClearValue
   6182   {
   6183     ClearValue( ClearColorValue color_ = ClearColorValue() )
   6184     {
   6185       color = color_;
   6186     }
   6187 
   6188     ClearValue( ClearDepthStencilValue depthStencil_ )
   6189     {
   6190       depthStencil = depthStencil_;
   6191     }
   6192 
   6193     ClearValue& setColor( ClearColorValue color_ )
   6194     {
   6195       color = color_;
   6196       return *this;
   6197     }
   6198 
   6199     ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
   6200     {
   6201       depthStencil = depthStencil_;
   6202       return *this;
   6203     }
   6204 
   6205     operator VkClearValue const&() const
   6206     {
   6207       return *reinterpret_cast<const VkClearValue*>(this);
   6208     }
   6209 
   6210     operator VkClearValue &()
   6211     {
   6212       return *reinterpret_cast<VkClearValue*>(this);
   6213     }
   6214 
   6215 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
   6216     ClearColorValue color;
   6217     ClearDepthStencilValue depthStencil;
   6218 #else
   6219     VkClearColorValue color;
   6220     VkClearDepthStencilValue depthStencil;
   6221 #endif  // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
   6222   };
   6223 
   6224   struct PhysicalDeviceFeatures
   6225   {
   6226     PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = 0,
   6227                             Bool32 fullDrawIndexUint32_ = 0,
   6228                             Bool32 imageCubeArray_ = 0,
   6229                             Bool32 independentBlend_ = 0,
   6230                             Bool32 geometryShader_ = 0,
   6231                             Bool32 tessellationShader_ = 0,
   6232                             Bool32 sampleRateShading_ = 0,
   6233                             Bool32 dualSrcBlend_ = 0,
   6234                             Bool32 logicOp_ = 0,
   6235                             Bool32 multiDrawIndirect_ = 0,
   6236                             Bool32 drawIndirectFirstInstance_ = 0,
   6237                             Bool32 depthClamp_ = 0,
   6238                             Bool32 depthBiasClamp_ = 0,
   6239                             Bool32 fillModeNonSolid_ = 0,
   6240                             Bool32 depthBounds_ = 0,
   6241                             Bool32 wideLines_ = 0,
   6242                             Bool32 largePoints_ = 0,
   6243                             Bool32 alphaToOne_ = 0,
   6244                             Bool32 multiViewport_ = 0,
   6245                             Bool32 samplerAnisotropy_ = 0,
   6246                             Bool32 textureCompressionETC2_ = 0,
   6247                             Bool32 textureCompressionASTC_LDR_ = 0,
   6248                             Bool32 textureCompressionBC_ = 0,
   6249                             Bool32 occlusionQueryPrecise_ = 0,
   6250                             Bool32 pipelineStatisticsQuery_ = 0,
   6251                             Bool32 vertexPipelineStoresAndAtomics_ = 0,
   6252                             Bool32 fragmentStoresAndAtomics_ = 0,
   6253                             Bool32 shaderTessellationAndGeometryPointSize_ = 0,
   6254                             Bool32 shaderImageGatherExtended_ = 0,
   6255                             Bool32 shaderStorageImageExtendedFormats_ = 0,
   6256                             Bool32 shaderStorageImageMultisample_ = 0,
   6257                             Bool32 shaderStorageImageReadWithoutFormat_ = 0,
   6258                             Bool32 shaderStorageImageWriteWithoutFormat_ = 0,
   6259                             Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0,
   6260                             Bool32 shaderSampledImageArrayDynamicIndexing_ = 0,
   6261                             Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0,
   6262                             Bool32 shaderStorageImageArrayDynamicIndexing_ = 0,
   6263                             Bool32 shaderClipDistance_ = 0,
   6264                             Bool32 shaderCullDistance_ = 0,
   6265                             Bool32 shaderFloat64_ = 0,
   6266                             Bool32 shaderInt64_ = 0,
   6267                             Bool32 shaderInt16_ = 0,
   6268                             Bool32 shaderResourceResidency_ = 0,
   6269                             Bool32 shaderResourceMinLod_ = 0,
   6270                             Bool32 sparseBinding_ = 0,
   6271                             Bool32 sparseResidencyBuffer_ = 0,
   6272                             Bool32 sparseResidencyImage2D_ = 0,
   6273                             Bool32 sparseResidencyImage3D_ = 0,
   6274                             Bool32 sparseResidency2Samples_ = 0,
   6275                             Bool32 sparseResidency4Samples_ = 0,
   6276                             Bool32 sparseResidency8Samples_ = 0,
   6277                             Bool32 sparseResidency16Samples_ = 0,
   6278                             Bool32 sparseResidencyAliased_ = 0,
   6279                             Bool32 variableMultisampleRate_ = 0,
   6280                             Bool32 inheritedQueries_ = 0 )
   6281       : robustBufferAccess( robustBufferAccess_ )
   6282       , fullDrawIndexUint32( fullDrawIndexUint32_ )
   6283       , imageCubeArray( imageCubeArray_ )
   6284       , independentBlend( independentBlend_ )
   6285       , geometryShader( geometryShader_ )
   6286       , tessellationShader( tessellationShader_ )
   6287       , sampleRateShading( sampleRateShading_ )
   6288       , dualSrcBlend( dualSrcBlend_ )
   6289       , logicOp( logicOp_ )
   6290       , multiDrawIndirect( multiDrawIndirect_ )
   6291       , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
   6292       , depthClamp( depthClamp_ )
   6293       , depthBiasClamp( depthBiasClamp_ )
   6294       , fillModeNonSolid( fillModeNonSolid_ )
   6295       , depthBounds( depthBounds_ )
   6296       , wideLines( wideLines_ )
   6297       , largePoints( largePoints_ )
   6298       , alphaToOne( alphaToOne_ )
   6299       , multiViewport( multiViewport_ )
   6300       , samplerAnisotropy( samplerAnisotropy_ )
   6301       , textureCompressionETC2( textureCompressionETC2_ )
   6302       , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
   6303       , textureCompressionBC( textureCompressionBC_ )
   6304       , occlusionQueryPrecise( occlusionQueryPrecise_ )
   6305       , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
   6306       , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
   6307       , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
   6308       , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
   6309       , shaderImageGatherExtended( shaderImageGatherExtended_ )
   6310       , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
   6311       , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
   6312       , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
   6313       , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
   6314       , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
   6315       , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
   6316       , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
   6317       , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
   6318       , shaderClipDistance( shaderClipDistance_ )
   6319       , shaderCullDistance( shaderCullDistance_ )
   6320       , shaderFloat64( shaderFloat64_ )
   6321       , shaderInt64( shaderInt64_ )
   6322       , shaderInt16( shaderInt16_ )
   6323       , shaderResourceResidency( shaderResourceResidency_ )
   6324       , shaderResourceMinLod( shaderResourceMinLod_ )
   6325       , sparseBinding( sparseBinding_ )
   6326       , sparseResidencyBuffer( sparseResidencyBuffer_ )
   6327       , sparseResidencyImage2D( sparseResidencyImage2D_ )
   6328       , sparseResidencyImage3D( sparseResidencyImage3D_ )
   6329       , sparseResidency2Samples( sparseResidency2Samples_ )
   6330       , sparseResidency4Samples( sparseResidency4Samples_ )
   6331       , sparseResidency8Samples( sparseResidency8Samples_ )
   6332       , sparseResidency16Samples( sparseResidency16Samples_ )
   6333       , sparseResidencyAliased( sparseResidencyAliased_ )
   6334       , variableMultisampleRate( variableMultisampleRate_ )
   6335       , inheritedQueries( inheritedQueries_ )
   6336     {
   6337     }
   6338 
   6339     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
   6340     {
   6341       memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
   6342     }
   6343 
   6344     PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
   6345     {
   6346       memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
   6347       return *this;
   6348     }
   6349     PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
   6350     {
   6351       robustBufferAccess = robustBufferAccess_;
   6352       return *this;
   6353     }
   6354 
   6355     PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
   6356     {
   6357       fullDrawIndexUint32 = fullDrawIndexUint32_;
   6358       return *this;
   6359     }
   6360 
   6361     PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
   6362     {
   6363       imageCubeArray = imageCubeArray_;
   6364       return *this;
   6365     }
   6366 
   6367     PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
   6368     {
   6369       independentBlend = independentBlend_;
   6370       return *this;
   6371     }
   6372 
   6373     PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
   6374     {
   6375       geometryShader = geometryShader_;
   6376       return *this;
   6377     }
   6378 
   6379     PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
   6380     {
   6381       tessellationShader = tessellationShader_;
   6382       return *this;
   6383     }
   6384 
   6385     PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
   6386     {
   6387       sampleRateShading = sampleRateShading_;
   6388       return *this;
   6389     }
   6390 
   6391     PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
   6392     {
   6393       dualSrcBlend = dualSrcBlend_;
   6394       return *this;
   6395     }
   6396 
   6397     PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
   6398     {
   6399       logicOp = logicOp_;
   6400       return *this;
   6401     }
   6402 
   6403     PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
   6404     {
   6405       multiDrawIndirect = multiDrawIndirect_;
   6406       return *this;
   6407     }
   6408 
   6409     PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
   6410     {
   6411       drawIndirectFirstInstance = drawIndirectFirstInstance_;
   6412       return *this;
   6413     }
   6414 
   6415     PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
   6416     {
   6417       depthClamp = depthClamp_;
   6418       return *this;
   6419     }
   6420 
   6421     PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
   6422     {
   6423       depthBiasClamp = depthBiasClamp_;
   6424       return *this;
   6425     }
   6426 
   6427     PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
   6428     {
   6429       fillModeNonSolid = fillModeNonSolid_;
   6430       return *this;
   6431     }
   6432 
   6433     PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
   6434     {
   6435       depthBounds = depthBounds_;
   6436       return *this;
   6437     }
   6438 
   6439     PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
   6440     {
   6441       wideLines = wideLines_;
   6442       return *this;
   6443     }
   6444 
   6445     PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
   6446     {
   6447       largePoints = largePoints_;
   6448       return *this;
   6449     }
   6450 
   6451     PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
   6452     {
   6453       alphaToOne = alphaToOne_;
   6454       return *this;
   6455     }
   6456 
   6457     PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
   6458     {
   6459       multiViewport = multiViewport_;
   6460       return *this;
   6461     }
   6462 
   6463     PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
   6464     {
   6465       samplerAnisotropy = samplerAnisotropy_;
   6466       return *this;
   6467     }
   6468 
   6469     PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
   6470     {
   6471       textureCompressionETC2 = textureCompressionETC2_;
   6472       return *this;
   6473     }
   6474 
   6475     PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
   6476     {
   6477       textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
   6478       return *this;
   6479     }
   6480 
   6481     PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
   6482     {
   6483       textureCompressionBC = textureCompressionBC_;
   6484       return *this;
   6485     }
   6486 
   6487     PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
   6488     {
   6489       occlusionQueryPrecise = occlusionQueryPrecise_;
   6490       return *this;
   6491     }
   6492 
   6493     PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
   6494     {
   6495       pipelineStatisticsQuery = pipelineStatisticsQuery_;
   6496       return *this;
   6497     }
   6498 
   6499     PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
   6500     {
   6501       vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
   6502       return *this;
   6503     }
   6504 
   6505     PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
   6506     {
   6507       fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
   6508       return *this;
   6509     }
   6510 
   6511     PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
   6512     {
   6513       shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
   6514       return *this;
   6515     }
   6516 
   6517     PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
   6518     {
   6519       shaderImageGatherExtended = shaderImageGatherExtended_;
   6520       return *this;
   6521     }
   6522 
   6523     PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
   6524     {
   6525       shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
   6526       return *this;
   6527     }
   6528 
   6529     PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
   6530     {
   6531       shaderStorageImageMultisample = shaderStorageImageMultisample_;
   6532       return *this;
   6533     }
   6534 
   6535     PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
   6536     {
   6537       shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
   6538       return *this;
   6539     }
   6540 
   6541     PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
   6542     {
   6543       shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
   6544       return *this;
   6545     }
   6546 
   6547     PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
   6548     {
   6549       shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
   6550       return *this;
   6551     }
   6552 
   6553     PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
   6554     {
   6555       shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
   6556       return *this;
   6557     }
   6558 
   6559     PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
   6560     {
   6561       shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
   6562       return *this;
   6563     }
   6564 
   6565     PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
   6566     {
   6567       shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
   6568       return *this;
   6569     }
   6570 
   6571     PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
   6572     {
   6573       shaderClipDistance = shaderClipDistance_;
   6574       return *this;
   6575     }
   6576 
   6577     PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
   6578     {
   6579       shaderCullDistance = shaderCullDistance_;
   6580       return *this;
   6581     }
   6582 
   6583     PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
   6584     {
   6585       shaderFloat64 = shaderFloat64_;
   6586       return *this;
   6587     }
   6588 
   6589     PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
   6590     {
   6591       shaderInt64 = shaderInt64_;
   6592       return *this;
   6593     }
   6594 
   6595     PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
   6596     {
   6597       shaderInt16 = shaderInt16_;
   6598       return *this;
   6599     }
   6600 
   6601     PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
   6602     {
   6603       shaderResourceResidency = shaderResourceResidency_;
   6604       return *this;
   6605     }
   6606 
   6607     PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
   6608     {
   6609       shaderResourceMinLod = shaderResourceMinLod_;
   6610       return *this;
   6611     }
   6612 
   6613     PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
   6614     {
   6615       sparseBinding = sparseBinding_;
   6616       return *this;
   6617     }
   6618 
   6619     PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
   6620     {
   6621       sparseResidencyBuffer = sparseResidencyBuffer_;
   6622       return *this;
   6623     }
   6624 
   6625     PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
   6626     {
   6627       sparseResidencyImage2D = sparseResidencyImage2D_;
   6628       return *this;
   6629     }
   6630 
   6631     PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
   6632     {
   6633       sparseResidencyImage3D = sparseResidencyImage3D_;
   6634       return *this;
   6635     }
   6636 
   6637     PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
   6638     {
   6639       sparseResidency2Samples = sparseResidency2Samples_;
   6640       return *this;
   6641     }
   6642 
   6643     PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
   6644     {
   6645       sparseResidency4Samples = sparseResidency4Samples_;
   6646       return *this;
   6647     }
   6648 
   6649     PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
   6650     {
   6651       sparseResidency8Samples = sparseResidency8Samples_;
   6652       return *this;
   6653     }
   6654 
   6655     PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
   6656     {
   6657       sparseResidency16Samples = sparseResidency16Samples_;
   6658       return *this;
   6659     }
   6660 
   6661     PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
   6662     {
   6663       sparseResidencyAliased = sparseResidencyAliased_;
   6664       return *this;
   6665     }
   6666 
   6667     PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
   6668     {
   6669       variableMultisampleRate = variableMultisampleRate_;
   6670       return *this;
   6671     }
   6672 
   6673     PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
   6674     {
   6675       inheritedQueries = inheritedQueries_;
   6676       return *this;
   6677     }
   6678 
   6679     operator VkPhysicalDeviceFeatures const&() const
   6680     {
   6681       return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
   6682     }
   6683 
   6684     operator VkPhysicalDeviceFeatures &()
   6685     {
   6686       return *reinterpret_cast<VkPhysicalDeviceFeatures*>(this);
   6687     }
   6688 
   6689     bool operator==( PhysicalDeviceFeatures const& rhs ) const
   6690     {
   6691       return ( robustBufferAccess == rhs.robustBufferAccess )
   6692           && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
   6693           && ( imageCubeArray == rhs.imageCubeArray )
   6694           && ( independentBlend == rhs.independentBlend )
   6695           && ( geometryShader == rhs.geometryShader )
   6696           && ( tessellationShader == rhs.tessellationShader )
   6697           && ( sampleRateShading == rhs.sampleRateShading )
   6698           && ( dualSrcBlend == rhs.dualSrcBlend )
   6699           && ( logicOp == rhs.logicOp )
   6700           && ( multiDrawIndirect == rhs.multiDrawIndirect )
   6701           && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
   6702           && ( depthClamp == rhs.depthClamp )
   6703           && ( depthBiasClamp == rhs.depthBiasClamp )
   6704           && ( fillModeNonSolid == rhs.fillModeNonSolid )
   6705           && ( depthBounds == rhs.depthBounds )
   6706           && ( wideLines == rhs.wideLines )
   6707           && ( largePoints == rhs.largePoints )
   6708           && ( alphaToOne == rhs.alphaToOne )
   6709           && ( multiViewport == rhs.multiViewport )
   6710           && ( samplerAnisotropy == rhs.samplerAnisotropy )
   6711           && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
   6712           && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
   6713           && ( textureCompressionBC == rhs.textureCompressionBC )
   6714           && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
   6715           && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
   6716           && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
   6717           && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
   6718           && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
   6719           && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
   6720           && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
   6721           && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
   6722           && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
   6723           && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
   6724           && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
   6725           && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
   6726           && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
   6727           && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
   6728           && ( shaderClipDistance == rhs.shaderClipDistance )
   6729           && ( shaderCullDistance == rhs.shaderCullDistance )
   6730           && ( shaderFloat64 == rhs.shaderFloat64 )
   6731           && ( shaderInt64 == rhs.shaderInt64 )
   6732           && ( shaderInt16 == rhs.shaderInt16 )
   6733           && ( shaderResourceResidency == rhs.shaderResourceResidency )
   6734           && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
   6735           && ( sparseBinding == rhs.sparseBinding )
   6736           && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
   6737           && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
   6738           && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
   6739           && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
   6740           && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
   6741           && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
   6742           && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
   6743           && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
   6744           && ( variableMultisampleRate == rhs.variableMultisampleRate )
   6745           && ( inheritedQueries == rhs.inheritedQueries );
   6746     }
   6747 
   6748     bool operator!=( PhysicalDeviceFeatures const& rhs ) const
   6749     {
   6750       return !operator==( rhs );
   6751     }
   6752 
   6753     Bool32 robustBufferAccess;
   6754     Bool32 fullDrawIndexUint32;
   6755     Bool32 imageCubeArray;
   6756     Bool32 independentBlend;
   6757     Bool32 geometryShader;
   6758     Bool32 tessellationShader;
   6759     Bool32 sampleRateShading;
   6760     Bool32 dualSrcBlend;
   6761     Bool32 logicOp;
   6762     Bool32 multiDrawIndirect;
   6763     Bool32 drawIndirectFirstInstance;
   6764     Bool32 depthClamp;
   6765     Bool32 depthBiasClamp;
   6766     Bool32 fillModeNonSolid;
   6767     Bool32 depthBounds;
   6768     Bool32 wideLines;
   6769     Bool32 largePoints;
   6770     Bool32 alphaToOne;
   6771     Bool32 multiViewport;
   6772     Bool32 samplerAnisotropy;
   6773     Bool32 textureCompressionETC2;
   6774     Bool32 textureCompressionASTC_LDR;
   6775     Bool32 textureCompressionBC;
   6776     Bool32 occlusionQueryPrecise;
   6777     Bool32 pipelineStatisticsQuery;
   6778     Bool32 vertexPipelineStoresAndAtomics;
   6779     Bool32 fragmentStoresAndAtomics;
   6780     Bool32 shaderTessellationAndGeometryPointSize;
   6781     Bool32 shaderImageGatherExtended;
   6782     Bool32 shaderStorageImageExtendedFormats;
   6783     Bool32 shaderStorageImageMultisample;
   6784     Bool32 shaderStorageImageReadWithoutFormat;
   6785     Bool32 shaderStorageImageWriteWithoutFormat;
   6786     Bool32 shaderUniformBufferArrayDynamicIndexing;
   6787     Bool32 shaderSampledImageArrayDynamicIndexing;
   6788     Bool32 shaderStorageBufferArrayDynamicIndexing;
   6789     Bool32 shaderStorageImageArrayDynamicIndexing;
   6790     Bool32 shaderClipDistance;
   6791     Bool32 shaderCullDistance;
   6792     Bool32 shaderFloat64;
   6793     Bool32 shaderInt64;
   6794     Bool32 shaderInt16;
   6795     Bool32 shaderResourceResidency;
   6796     Bool32 shaderResourceMinLod;
   6797     Bool32 sparseBinding;
   6798     Bool32 sparseResidencyBuffer;
   6799     Bool32 sparseResidencyImage2D;
   6800     Bool32 sparseResidencyImage3D;
   6801     Bool32 sparseResidency2Samples;
   6802     Bool32 sparseResidency4Samples;
   6803     Bool32 sparseResidency8Samples;
   6804     Bool32 sparseResidency16Samples;
   6805     Bool32 sparseResidencyAliased;
   6806     Bool32 variableMultisampleRate;
   6807     Bool32 inheritedQueries;
   6808   };
   6809   static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
   6810 
   6811   struct PhysicalDeviceSparseProperties
   6812   {
   6813     operator VkPhysicalDeviceSparseProperties const&() const
   6814     {
   6815       return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
   6816     }
   6817 
   6818     operator VkPhysicalDeviceSparseProperties &()
   6819     {
   6820       return *reinterpret_cast<VkPhysicalDeviceSparseProperties*>(this);
   6821     }
   6822 
   6823     bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
   6824     {
   6825       return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
   6826           && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
   6827           && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
   6828           && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
   6829           && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
   6830     }
   6831 
   6832     bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
   6833     {
   6834       return !operator==( rhs );
   6835     }
   6836 
   6837     Bool32 residencyStandard2DBlockShape;
   6838     Bool32 residencyStandard2DMultisampleBlockShape;
   6839     Bool32 residencyStandard3DBlockShape;
   6840     Bool32 residencyAlignedMipSize;
   6841     Bool32 residencyNonResidentStrict;
   6842   };
   6843   static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
   6844 
   6845   struct DrawIndirectCommand
   6846   {
   6847     DrawIndirectCommand( uint32_t vertexCount_ = 0,
   6848                          uint32_t instanceCount_ = 0,
   6849                          uint32_t firstVertex_ = 0,
   6850                          uint32_t firstInstance_ = 0 )
   6851       : vertexCount( vertexCount_ )
   6852       , instanceCount( instanceCount_ )
   6853       , firstVertex( firstVertex_ )
   6854       , firstInstance( firstInstance_ )
   6855     {
   6856     }
   6857 
   6858     DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
   6859     {
   6860       memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
   6861     }
   6862 
   6863     DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
   6864     {
   6865       memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
   6866       return *this;
   6867     }
   6868     DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
   6869     {
   6870       vertexCount = vertexCount_;
   6871       return *this;
   6872     }
   6873 
   6874     DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
   6875     {
   6876       instanceCount = instanceCount_;
   6877       return *this;
   6878     }
   6879 
   6880     DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
   6881     {
   6882       firstVertex = firstVertex_;
   6883       return *this;
   6884     }
   6885 
   6886     DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
   6887     {
   6888       firstInstance = firstInstance_;
   6889       return *this;
   6890     }
   6891 
   6892     operator VkDrawIndirectCommand const&() const
   6893     {
   6894       return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
   6895     }
   6896 
   6897     operator VkDrawIndirectCommand &()
   6898     {
   6899       return *reinterpret_cast<VkDrawIndirectCommand*>(this);
   6900     }
   6901 
   6902     bool operator==( DrawIndirectCommand const& rhs ) const
   6903     {
   6904       return ( vertexCount == rhs.vertexCount )
   6905           && ( instanceCount == rhs.instanceCount )
   6906           && ( firstVertex == rhs.firstVertex )
   6907           && ( firstInstance == rhs.firstInstance );
   6908     }
   6909 
   6910     bool operator!=( DrawIndirectCommand const& rhs ) const
   6911     {
   6912       return !operator==( rhs );
   6913     }
   6914 
   6915     uint32_t vertexCount;
   6916     uint32_t instanceCount;
   6917     uint32_t firstVertex;
   6918     uint32_t firstInstance;
   6919   };
   6920   static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
   6921 
   6922   struct DrawIndexedIndirectCommand
   6923   {
   6924     DrawIndexedIndirectCommand( uint32_t indexCount_ = 0,
   6925                                 uint32_t instanceCount_ = 0,
   6926                                 uint32_t firstIndex_ = 0,
   6927                                 int32_t vertexOffset_ = 0,
   6928                                 uint32_t firstInstance_ = 0 )
   6929       : indexCount( indexCount_ )
   6930       , instanceCount( instanceCount_ )
   6931       , firstIndex( firstIndex_ )
   6932       , vertexOffset( vertexOffset_ )
   6933       , firstInstance( firstInstance_ )
   6934     {
   6935     }
   6936 
   6937     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
   6938     {
   6939       memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
   6940     }
   6941 
   6942     DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
   6943     {
   6944       memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
   6945       return *this;
   6946     }
   6947     DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
   6948     {
   6949       indexCount = indexCount_;
   6950       return *this;
   6951     }
   6952 
   6953     DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
   6954     {
   6955       instanceCount = instanceCount_;
   6956       return *this;
   6957     }
   6958 
   6959     DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
   6960     {
   6961       firstIndex = firstIndex_;
   6962       return *this;
   6963     }
   6964 
   6965     DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
   6966     {
   6967       vertexOffset = vertexOffset_;
   6968       return *this;
   6969     }
   6970 
   6971     DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
   6972     {
   6973       firstInstance = firstInstance_;
   6974       return *this;
   6975     }
   6976 
   6977     operator VkDrawIndexedIndirectCommand const&() const
   6978     {
   6979       return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
   6980     }
   6981 
   6982     operator VkDrawIndexedIndirectCommand &()
   6983     {
   6984       return *reinterpret_cast<VkDrawIndexedIndirectCommand*>(this);
   6985     }
   6986 
   6987     bool operator==( DrawIndexedIndirectCommand const& rhs ) const
   6988     {
   6989       return ( indexCount == rhs.indexCount )
   6990           && ( instanceCount == rhs.instanceCount )
   6991           && ( firstIndex == rhs.firstIndex )
   6992           && ( vertexOffset == rhs.vertexOffset )
   6993           && ( firstInstance == rhs.firstInstance );
   6994     }
   6995 
   6996     bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
   6997     {
   6998       return !operator==( rhs );
   6999     }
   7000 
   7001     uint32_t indexCount;
   7002     uint32_t instanceCount;
   7003     uint32_t firstIndex;
   7004     int32_t vertexOffset;
   7005     uint32_t firstInstance;
   7006   };
   7007   static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
   7008 
   7009   struct DispatchIndirectCommand
   7010   {
   7011     DispatchIndirectCommand( uint32_t x_ = 0,
   7012                              uint32_t y_ = 0,
   7013                              uint32_t z_ = 0 )
   7014       : x( x_ )
   7015       , y( y_ )
   7016       , z( z_ )
   7017     {
   7018     }
   7019 
   7020     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
   7021     {
   7022       memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
   7023     }
   7024 
   7025     DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
   7026     {
   7027       memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
   7028       return *this;
   7029     }
   7030     DispatchIndirectCommand& setX( uint32_t x_ )
   7031     {
   7032       x = x_;
   7033       return *this;
   7034     }
   7035 
   7036     DispatchIndirectCommand& setY( uint32_t y_ )
   7037     {
   7038       y = y_;
   7039       return *this;
   7040     }
   7041 
   7042     DispatchIndirectCommand& setZ( uint32_t z_ )
   7043     {
   7044       z = z_;
   7045       return *this;
   7046     }
   7047 
   7048     operator VkDispatchIndirectCommand const&() const
   7049     {
   7050       return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
   7051     }
   7052 
   7053     operator VkDispatchIndirectCommand &()
   7054     {
   7055       return *reinterpret_cast<VkDispatchIndirectCommand*>(this);
   7056     }
   7057 
   7058     bool operator==( DispatchIndirectCommand const& rhs ) const
   7059     {
   7060       return ( x == rhs.x )
   7061           && ( y == rhs.y )
   7062           && ( z == rhs.z );
   7063     }
   7064 
   7065     bool operator!=( DispatchIndirectCommand const& rhs ) const
   7066     {
   7067       return !operator==( rhs );
   7068     }
   7069 
   7070     uint32_t x;
   7071     uint32_t y;
   7072     uint32_t z;
   7073   };
   7074   static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
   7075 
   7076   struct DisplayPlanePropertiesKHR
   7077   {
   7078     operator VkDisplayPlanePropertiesKHR const&() const
   7079     {
   7080       return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
   7081     }
   7082 
   7083     operator VkDisplayPlanePropertiesKHR &()
   7084     {
   7085       return *reinterpret_cast<VkDisplayPlanePropertiesKHR*>(this);
   7086     }
   7087 
   7088     bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
   7089     {
   7090       return ( currentDisplay == rhs.currentDisplay )
   7091           && ( currentStackIndex == rhs.currentStackIndex );
   7092     }
   7093 
   7094     bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
   7095     {
   7096       return !operator==( rhs );
   7097     }
   7098 
   7099     DisplayKHR currentDisplay;
   7100     uint32_t currentStackIndex;
   7101   };
   7102   static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
   7103 
   7104   struct DisplayModeParametersKHR
   7105   {
   7106     DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(),
   7107                               uint32_t refreshRate_ = 0 )
   7108       : visibleRegion( visibleRegion_ )
   7109       , refreshRate( refreshRate_ )
   7110     {
   7111     }
   7112 
   7113     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
   7114     {
   7115       memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
   7116     }
   7117 
   7118     DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
   7119     {
   7120       memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
   7121       return *this;
   7122     }
   7123     DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
   7124     {
   7125       visibleRegion = visibleRegion_;
   7126       return *this;
   7127     }
   7128 
   7129     DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
   7130     {
   7131       refreshRate = refreshRate_;
   7132       return *this;
   7133     }
   7134 
   7135     operator VkDisplayModeParametersKHR const&() const
   7136     {
   7137       return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
   7138     }
   7139 
   7140     operator VkDisplayModeParametersKHR &()
   7141     {
   7142       return *reinterpret_cast<VkDisplayModeParametersKHR*>(this);
   7143     }
   7144 
   7145     bool operator==( DisplayModeParametersKHR const& rhs ) const
   7146     {
   7147       return ( visibleRegion == rhs.visibleRegion )
   7148           && ( refreshRate == rhs.refreshRate );
   7149     }
   7150 
   7151     bool operator!=( DisplayModeParametersKHR const& rhs ) const
   7152     {
   7153       return !operator==( rhs );
   7154     }
   7155 
   7156     Extent2D visibleRegion;
   7157     uint32_t refreshRate;
   7158   };
   7159   static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
   7160 
   7161   struct DisplayModePropertiesKHR
   7162   {
   7163     operator VkDisplayModePropertiesKHR const&() const
   7164     {
   7165       return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
   7166     }
   7167 
   7168     operator VkDisplayModePropertiesKHR &()
   7169     {
   7170       return *reinterpret_cast<VkDisplayModePropertiesKHR*>(this);
   7171     }
   7172 
   7173     bool operator==( DisplayModePropertiesKHR const& rhs ) const
   7174     {
   7175       return ( displayMode == rhs.displayMode )
   7176           && ( parameters == rhs.parameters );
   7177     }
   7178 
   7179     bool operator!=( DisplayModePropertiesKHR const& rhs ) const
   7180     {
   7181       return !operator==( rhs );
   7182     }
   7183 
   7184     DisplayModeKHR displayMode;
   7185     DisplayModeParametersKHR parameters;
   7186   };
   7187   static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
   7188 
   7189   struct ConformanceVersionKHR
   7190   {
   7191     ConformanceVersionKHR( uint8_t major_ = 0,
   7192                            uint8_t minor_ = 0,
   7193                            uint8_t subminor_ = 0,
   7194                            uint8_t patch_ = 0 )
   7195       : major( major_ )
   7196       , minor( minor_ )
   7197       , subminor( subminor_ )
   7198       , patch( patch_ )
   7199     {
   7200     }
   7201 
   7202     ConformanceVersionKHR( VkConformanceVersionKHR const & rhs )
   7203     {
   7204       memcpy( this, &rhs, sizeof( ConformanceVersionKHR ) );
   7205     }
   7206 
   7207     ConformanceVersionKHR& operator=( VkConformanceVersionKHR const & rhs )
   7208     {
   7209       memcpy( this, &rhs, sizeof( ConformanceVersionKHR ) );
   7210       return *this;
   7211     }
   7212     ConformanceVersionKHR& setMajor( uint8_t major_ )
   7213     {
   7214       major = major_;
   7215       return *this;
   7216     }
   7217 
   7218     ConformanceVersionKHR& setMinor( uint8_t minor_ )
   7219     {
   7220       minor = minor_;
   7221       return *this;
   7222     }
   7223 
   7224     ConformanceVersionKHR& setSubminor( uint8_t subminor_ )
   7225     {
   7226       subminor = subminor_;
   7227       return *this;
   7228     }
   7229 
   7230     ConformanceVersionKHR& setPatch( uint8_t patch_ )
   7231     {
   7232       patch = patch_;
   7233       return *this;
   7234     }
   7235 
   7236     operator VkConformanceVersionKHR const&() const
   7237     {
   7238       return *reinterpret_cast<const VkConformanceVersionKHR*>(this);
   7239     }
   7240 
   7241     operator VkConformanceVersionKHR &()
   7242     {
   7243       return *reinterpret_cast<VkConformanceVersionKHR*>(this);
   7244     }
   7245 
   7246     bool operator==( ConformanceVersionKHR const& rhs ) const
   7247     {
   7248       return ( major == rhs.major )
   7249           && ( minor == rhs.minor )
   7250           && ( subminor == rhs.subminor )
   7251           && ( patch == rhs.patch );
   7252     }
   7253 
   7254     bool operator!=( ConformanceVersionKHR const& rhs ) const
   7255     {
   7256       return !operator==( rhs );
   7257     }
   7258 
   7259     uint8_t major;
   7260     uint8_t minor;
   7261     uint8_t subminor;
   7262     uint8_t patch;
   7263   };
   7264   static_assert( sizeof( ConformanceVersionKHR ) == sizeof( VkConformanceVersionKHR ), "struct and wrapper have different size!" );
   7265 
   7266   struct RectLayerKHR
   7267   {
   7268     RectLayerKHR( Offset2D offset_ = Offset2D(),
   7269                   Extent2D extent_ = Extent2D(),
   7270                   uint32_t layer_ = 0 )
   7271       : offset( offset_ )
   7272       , extent( extent_ )
   7273       , layer( layer_ )
   7274     {
   7275     }
   7276 
   7277     explicit RectLayerKHR( Rect2D const& rect2D,
   7278                            uint32_t layer_ = 0 )
   7279       : offset( rect2D.offset )
   7280       , extent( rect2D.extent )
   7281       , layer( layer_ )
   7282     {}
   7283 
   7284     RectLayerKHR( VkRectLayerKHR const & rhs )
   7285     {
   7286       memcpy( this, &rhs, sizeof( RectLayerKHR ) );
   7287     }
   7288 
   7289     RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
   7290     {
   7291       memcpy( this, &rhs, sizeof( RectLayerKHR ) );
   7292       return *this;
   7293     }
   7294     RectLayerKHR& setOffset( Offset2D offset_ )
   7295     {
   7296       offset = offset_;
   7297       return *this;
   7298     }
   7299 
   7300     RectLayerKHR& setExtent( Extent2D extent_ )
   7301     {
   7302       extent = extent_;
   7303       return *this;
   7304     }
   7305 
   7306     RectLayerKHR& setLayer( uint32_t layer_ )
   7307     {
   7308       layer = layer_;
   7309       return *this;
   7310     }
   7311 
   7312     operator VkRectLayerKHR const&() const
   7313     {
   7314       return *reinterpret_cast<const VkRectLayerKHR*>(this);
   7315     }
   7316 
   7317     operator VkRectLayerKHR &()
   7318     {
   7319       return *reinterpret_cast<VkRectLayerKHR*>(this);
   7320     }
   7321 
   7322     bool operator==( RectLayerKHR const& rhs ) const
   7323     {
   7324       return ( offset == rhs.offset )
   7325           && ( extent == rhs.extent )
   7326           && ( layer == rhs.layer );
   7327     }
   7328 
   7329     bool operator!=( RectLayerKHR const& rhs ) const
   7330     {
   7331       return !operator==( rhs );
   7332     }
   7333 
   7334     Offset2D offset;
   7335     Extent2D extent;
   7336     uint32_t layer;
   7337   };
   7338   static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
   7339 
   7340   struct PresentRegionKHR
   7341   {
   7342     PresentRegionKHR( uint32_t rectangleCount_ = 0,
   7343                       const RectLayerKHR* pRectangles_ = nullptr )
   7344       : rectangleCount( rectangleCount_ )
   7345       , pRectangles( pRectangles_ )
   7346     {
   7347     }
   7348 
   7349     PresentRegionKHR( VkPresentRegionKHR const & rhs )
   7350     {
   7351       memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
   7352     }
   7353 
   7354     PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
   7355     {
   7356       memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
   7357       return *this;
   7358     }
   7359     PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
   7360     {
   7361       rectangleCount = rectangleCount_;
   7362       return *this;
   7363     }
   7364 
   7365     PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
   7366     {
   7367       pRectangles = pRectangles_;
   7368       return *this;
   7369     }
   7370 
   7371     operator VkPresentRegionKHR const&() const
   7372     {
   7373       return *reinterpret_cast<const VkPresentRegionKHR*>(this);
   7374     }
   7375 
   7376     operator VkPresentRegionKHR &()
   7377     {
   7378       return *reinterpret_cast<VkPresentRegionKHR*>(this);
   7379     }
   7380 
   7381     bool operator==( PresentRegionKHR const& rhs ) const
   7382     {
   7383       return ( rectangleCount == rhs.rectangleCount )
   7384           && ( pRectangles == rhs.pRectangles );
   7385     }
   7386 
   7387     bool operator!=( PresentRegionKHR const& rhs ) const
   7388     {
   7389       return !operator==( rhs );
   7390     }
   7391 
   7392     uint32_t rectangleCount;
   7393     const RectLayerKHR* pRectangles;
   7394   };
   7395   static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
   7396 
   7397   struct XYColorEXT
   7398   {
   7399     XYColorEXT( float x_ = 0,
   7400                 float y_ = 0 )
   7401       : x( x_ )
   7402       , y( y_ )
   7403     {
   7404     }
   7405 
   7406     XYColorEXT( VkXYColorEXT const & rhs )
   7407     {
   7408       memcpy( this, &rhs, sizeof( XYColorEXT ) );
   7409     }
   7410 
   7411     XYColorEXT& operator=( VkXYColorEXT const & rhs )
   7412     {
   7413       memcpy( this, &rhs, sizeof( XYColorEXT ) );
   7414       return *this;
   7415     }
   7416     XYColorEXT& setX( float x_ )
   7417     {
   7418       x = x_;
   7419       return *this;
   7420     }
   7421 
   7422     XYColorEXT& setY( float y_ )
   7423     {
   7424       y = y_;
   7425       return *this;
   7426     }
   7427 
   7428     operator VkXYColorEXT const&() const
   7429     {
   7430       return *reinterpret_cast<const VkXYColorEXT*>(this);
   7431     }
   7432 
   7433     operator VkXYColorEXT &()
   7434     {
   7435       return *reinterpret_cast<VkXYColorEXT*>(this);
   7436     }
   7437 
   7438     bool operator==( XYColorEXT const& rhs ) const
   7439     {
   7440       return ( x == rhs.x )
   7441           && ( y == rhs.y );
   7442     }
   7443 
   7444     bool operator!=( XYColorEXT const& rhs ) const
   7445     {
   7446       return !operator==( rhs );
   7447     }
   7448 
   7449     float x;
   7450     float y;
   7451   };
   7452   static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
   7453 
   7454   struct RefreshCycleDurationGOOGLE
   7455   {
   7456     operator VkRefreshCycleDurationGOOGLE const&() const
   7457     {
   7458       return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
   7459     }
   7460 
   7461     operator VkRefreshCycleDurationGOOGLE &()
   7462     {
   7463       return *reinterpret_cast<VkRefreshCycleDurationGOOGLE*>(this);
   7464     }
   7465 
   7466     bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
   7467     {
   7468       return ( refreshDuration == rhs.refreshDuration );
   7469     }
   7470 
   7471     bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
   7472     {
   7473       return !operator==( rhs );
   7474     }
   7475 
   7476     uint64_t refreshDuration;
   7477   };
   7478   static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
   7479 
   7480   struct PastPresentationTimingGOOGLE
   7481   {
   7482     operator VkPastPresentationTimingGOOGLE const&() const
   7483     {
   7484       return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
   7485     }
   7486 
   7487     operator VkPastPresentationTimingGOOGLE &()
   7488     {
   7489       return *reinterpret_cast<VkPastPresentationTimingGOOGLE*>(this);
   7490     }
   7491 
   7492     bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
   7493     {
   7494       return ( presentID == rhs.presentID )
   7495           && ( desiredPresentTime == rhs.desiredPresentTime )
   7496           && ( actualPresentTime == rhs.actualPresentTime )
   7497           && ( earliestPresentTime == rhs.earliestPresentTime )
   7498           && ( presentMargin == rhs.presentMargin );
   7499     }
   7500 
   7501     bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
   7502     {
   7503       return !operator==( rhs );
   7504     }
   7505 
   7506     uint32_t presentID;
   7507     uint64_t desiredPresentTime;
   7508     uint64_t actualPresentTime;
   7509     uint64_t earliestPresentTime;
   7510     uint64_t presentMargin;
   7511   };
   7512   static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
   7513 
   7514   struct PresentTimeGOOGLE
   7515   {
   7516     PresentTimeGOOGLE( uint32_t presentID_ = 0,
   7517                        uint64_t desiredPresentTime_ = 0 )
   7518       : presentID( presentID_ )
   7519       , desiredPresentTime( desiredPresentTime_ )
   7520     {
   7521     }
   7522 
   7523     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
   7524     {
   7525       memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
   7526     }
   7527 
   7528     PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
   7529     {
   7530       memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
   7531       return *this;
   7532     }
   7533     PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
   7534     {
   7535       presentID = presentID_;
   7536       return *this;
   7537     }
   7538 
   7539     PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
   7540     {
   7541       desiredPresentTime = desiredPresentTime_;
   7542       return *this;
   7543     }
   7544 
   7545     operator VkPresentTimeGOOGLE const&() const
   7546     {
   7547       return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
   7548     }
   7549 
   7550     operator VkPresentTimeGOOGLE &()
   7551     {
   7552       return *reinterpret_cast<VkPresentTimeGOOGLE*>(this);
   7553     }
   7554 
   7555     bool operator==( PresentTimeGOOGLE const& rhs ) const
   7556     {
   7557       return ( presentID == rhs.presentID )
   7558           && ( desiredPresentTime == rhs.desiredPresentTime );
   7559     }
   7560 
   7561     bool operator!=( PresentTimeGOOGLE const& rhs ) const
   7562     {
   7563       return !operator==( rhs );
   7564     }
   7565 
   7566     uint32_t presentID;
   7567     uint64_t desiredPresentTime;
   7568   };
   7569   static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
   7570 
   7571   struct ViewportWScalingNV
   7572   {
   7573     ViewportWScalingNV( float xcoeff_ = 0,
   7574                         float ycoeff_ = 0 )
   7575       : xcoeff( xcoeff_ )
   7576       , ycoeff( ycoeff_ )
   7577     {
   7578     }
   7579 
   7580     ViewportWScalingNV( VkViewportWScalingNV const & rhs )
   7581     {
   7582       memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
   7583     }
   7584 
   7585     ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
   7586     {
   7587       memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
   7588       return *this;
   7589     }
   7590     ViewportWScalingNV& setXcoeff( float xcoeff_ )
   7591     {
   7592       xcoeff = xcoeff_;
   7593       return *this;
   7594     }
   7595 
   7596     ViewportWScalingNV& setYcoeff( float ycoeff_ )
   7597     {
   7598       ycoeff = ycoeff_;
   7599       return *this;
   7600     }
   7601 
   7602     operator VkViewportWScalingNV const&() const
   7603     {
   7604       return *reinterpret_cast<const VkViewportWScalingNV*>(this);
   7605     }
   7606 
   7607     operator VkViewportWScalingNV &()
   7608     {
   7609       return *reinterpret_cast<VkViewportWScalingNV*>(this);
   7610     }
   7611 
   7612     bool operator==( ViewportWScalingNV const& rhs ) const
   7613     {
   7614       return ( xcoeff == rhs.xcoeff )
   7615           && ( ycoeff == rhs.ycoeff );
   7616     }
   7617 
   7618     bool operator!=( ViewportWScalingNV const& rhs ) const
   7619     {
   7620       return !operator==( rhs );
   7621     }
   7622 
   7623     float xcoeff;
   7624     float ycoeff;
   7625   };
   7626   static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
   7627 
   7628   struct SampleLocationEXT
   7629   {
   7630     SampleLocationEXT( float x_ = 0,
   7631                        float y_ = 0 )
   7632       : x( x_ )
   7633       , y( y_ )
   7634     {
   7635     }
   7636 
   7637     SampleLocationEXT( VkSampleLocationEXT const & rhs )
   7638     {
   7639       memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
   7640     }
   7641 
   7642     SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
   7643     {
   7644       memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
   7645       return *this;
   7646     }
   7647     SampleLocationEXT& setX( float x_ )
   7648     {
   7649       x = x_;
   7650       return *this;
   7651     }
   7652 
   7653     SampleLocationEXT& setY( float y_ )
   7654     {
   7655       y = y_;
   7656       return *this;
   7657     }
   7658 
   7659     operator VkSampleLocationEXT const&() const
   7660     {
   7661       return *reinterpret_cast<const VkSampleLocationEXT*>(this);
   7662     }
   7663 
   7664     operator VkSampleLocationEXT &()
   7665     {
   7666       return *reinterpret_cast<VkSampleLocationEXT*>(this);
   7667     }
   7668 
   7669     bool operator==( SampleLocationEXT const& rhs ) const
   7670     {
   7671       return ( x == rhs.x )
   7672           && ( y == rhs.y );
   7673     }
   7674 
   7675     bool operator!=( SampleLocationEXT const& rhs ) const
   7676     {
   7677       return !operator==( rhs );
   7678     }
   7679 
   7680     float x;
   7681     float y;
   7682   };
   7683   static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
   7684 
   7685   struct ShaderResourceUsageAMD
   7686   {
   7687     operator VkShaderResourceUsageAMD const&() const
   7688     {
   7689       return *reinterpret_cast<const VkShaderResourceUsageAMD*>(this);
   7690     }
   7691 
   7692     operator VkShaderResourceUsageAMD &()
   7693     {
   7694       return *reinterpret_cast<VkShaderResourceUsageAMD*>(this);
   7695     }
   7696 
   7697     bool operator==( ShaderResourceUsageAMD const& rhs ) const
   7698     {
   7699       return ( numUsedVgprs == rhs.numUsedVgprs )
   7700           && ( numUsedSgprs == rhs.numUsedSgprs )
   7701           && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup )
   7702           && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes )
   7703           && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
   7704     }
   7705 
   7706     bool operator!=( ShaderResourceUsageAMD const& rhs ) const
   7707     {
   7708       return !operator==( rhs );
   7709     }
   7710 
   7711     uint32_t numUsedVgprs;
   7712     uint32_t numUsedSgprs;
   7713     uint32_t ldsSizePerLocalWorkGroup;
   7714     size_t ldsUsageSizeInBytes;
   7715     size_t scratchMemUsageInBytes;
   7716   };
   7717   static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" );
   7718 
   7719   struct VertexInputBindingDivisorDescriptionEXT
   7720   {
   7721     VertexInputBindingDivisorDescriptionEXT( uint32_t binding_ = 0,
   7722                                              uint32_t divisor_ = 0 )
   7723       : binding( binding_ )
   7724       , divisor( divisor_ )
   7725     {
   7726     }
   7727 
   7728     VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
   7729     {
   7730       memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
   7731     }
   7732 
   7733     VertexInputBindingDivisorDescriptionEXT& operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
   7734     {
   7735       memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
   7736       return *this;
   7737     }
   7738     VertexInputBindingDivisorDescriptionEXT& setBinding( uint32_t binding_ )
   7739     {
   7740       binding = binding_;
   7741       return *this;
   7742     }
   7743 
   7744     VertexInputBindingDivisorDescriptionEXT& setDivisor( uint32_t divisor_ )
   7745     {
   7746       divisor = divisor_;
   7747       return *this;
   7748     }
   7749 
   7750     operator VkVertexInputBindingDivisorDescriptionEXT const&() const
   7751     {
   7752       return *reinterpret_cast<const VkVertexInputBindingDivisorDescriptionEXT*>(this);
   7753     }
   7754 
   7755     operator VkVertexInputBindingDivisorDescriptionEXT &()
   7756     {
   7757       return *reinterpret_cast<VkVertexInputBindingDivisorDescriptionEXT*>(this);
   7758     }
   7759 
   7760     bool operator==( VertexInputBindingDivisorDescriptionEXT const& rhs ) const
   7761     {
   7762       return ( binding == rhs.binding )
   7763           && ( divisor == rhs.divisor );
   7764     }
   7765 
   7766     bool operator!=( VertexInputBindingDivisorDescriptionEXT const& rhs ) const
   7767     {
   7768       return !operator==( rhs );
   7769     }
   7770 
   7771     uint32_t binding;
   7772     uint32_t divisor;
   7773   };
   7774   static_assert( sizeof( VertexInputBindingDivisorDescriptionEXT ) == sizeof( VkVertexInputBindingDivisorDescriptionEXT ), "struct and wrapper have different size!" );
   7775 
   7776   struct CoarseSampleLocationNV
   7777   {
   7778     CoarseSampleLocationNV( uint32_t pixelX_ = 0,
   7779                             uint32_t pixelY_ = 0,
   7780                             uint32_t sample_ = 0 )
   7781       : pixelX( pixelX_ )
   7782       , pixelY( pixelY_ )
   7783       , sample( sample_ )
   7784     {
   7785     }
   7786 
   7787     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs )
   7788     {
   7789       memcpy( this, &rhs, sizeof( CoarseSampleLocationNV ) );
   7790     }
   7791 
   7792     CoarseSampleLocationNV& operator=( VkCoarseSampleLocationNV const & rhs )
   7793     {
   7794       memcpy( this, &rhs, sizeof( CoarseSampleLocationNV ) );
   7795       return *this;
   7796     }
   7797     CoarseSampleLocationNV& setPixelX( uint32_t pixelX_ )
   7798     {
   7799       pixelX = pixelX_;
   7800       return *this;
   7801     }
   7802 
   7803     CoarseSampleLocationNV& setPixelY( uint32_t pixelY_ )
   7804     {
   7805       pixelY = pixelY_;
   7806       return *this;
   7807     }
   7808 
   7809     CoarseSampleLocationNV& setSample( uint32_t sample_ )
   7810     {
   7811       sample = sample_;
   7812       return *this;
   7813     }
   7814 
   7815     operator VkCoarseSampleLocationNV const&() const
   7816     {
   7817       return *reinterpret_cast<const VkCoarseSampleLocationNV*>(this);
   7818     }
   7819 
   7820     operator VkCoarseSampleLocationNV &()
   7821     {
   7822       return *reinterpret_cast<VkCoarseSampleLocationNV*>(this);
   7823     }
   7824 
   7825     bool operator==( CoarseSampleLocationNV const& rhs ) const
   7826     {
   7827       return ( pixelX == rhs.pixelX )
   7828           && ( pixelY == rhs.pixelY )
   7829           && ( sample == rhs.sample );
   7830     }
   7831 
   7832     bool operator!=( CoarseSampleLocationNV const& rhs ) const
   7833     {
   7834       return !operator==( rhs );
   7835     }
   7836 
   7837     uint32_t pixelX;
   7838     uint32_t pixelY;
   7839     uint32_t sample;
   7840   };
   7841   static_assert( sizeof( CoarseSampleLocationNV ) == sizeof( VkCoarseSampleLocationNV ), "struct and wrapper have different size!" );
   7842 
   7843   struct DrawMeshTasksIndirectCommandNV
   7844   {
   7845     DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = 0,
   7846                                     uint32_t firstTask_ = 0 )
   7847       : taskCount( taskCount_ )
   7848       , firstTask( firstTask_ )
   7849     {
   7850     }
   7851 
   7852     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs )
   7853     {
   7854       memcpy( this, &rhs, sizeof( DrawMeshTasksIndirectCommandNV ) );
   7855     }
   7856 
   7857     DrawMeshTasksIndirectCommandNV& operator=( VkDrawMeshTasksIndirectCommandNV const & rhs )
   7858     {
   7859       memcpy( this, &rhs, sizeof( DrawMeshTasksIndirectCommandNV ) );
   7860       return *this;
   7861     }
   7862     DrawMeshTasksIndirectCommandNV& setTaskCount( uint32_t taskCount_ )
   7863     {
   7864       taskCount = taskCount_;
   7865       return *this;
   7866     }
   7867 
   7868     DrawMeshTasksIndirectCommandNV& setFirstTask( uint32_t firstTask_ )
   7869     {
   7870       firstTask = firstTask_;
   7871       return *this;
   7872     }
   7873 
   7874     operator VkDrawMeshTasksIndirectCommandNV const&() const
   7875     {
   7876       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandNV*>(this);
   7877     }
   7878 
   7879     operator VkDrawMeshTasksIndirectCommandNV &()
   7880     {
   7881       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV*>(this);
   7882     }
   7883 
   7884     bool operator==( DrawMeshTasksIndirectCommandNV const& rhs ) const
   7885     {
   7886       return ( taskCount == rhs.taskCount )
   7887           && ( firstTask == rhs.firstTask );
   7888     }
   7889 
   7890     bool operator!=( DrawMeshTasksIndirectCommandNV const& rhs ) const
   7891     {
   7892       return !operator==( rhs );
   7893     }
   7894 
   7895     uint32_t taskCount;
   7896     uint32_t firstTask;
   7897   };
   7898   static_assert( sizeof( DrawMeshTasksIndirectCommandNV ) == sizeof( VkDrawMeshTasksIndirectCommandNV ), "struct and wrapper have different size!" );
   7899 
   7900   enum class ImageLayout
   7901   {
   7902     eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
   7903     eGeneral = VK_IMAGE_LAYOUT_GENERAL,
   7904     eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
   7905     eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
   7906     eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
   7907     eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
   7908     eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
   7909     eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
   7910     ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
   7911     eDepthReadOnlyStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
   7912     eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
   7913     eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
   7914     eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
   7915     ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
   7916     eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
   7917     eShadingRateOptimalNV = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
   7918   };
   7919 
   7920   struct DescriptorImageInfo
   7921   {
   7922     DescriptorImageInfo( Sampler sampler_ = Sampler(),
   7923                          ImageView imageView_ = ImageView(),
   7924                          ImageLayout imageLayout_ = ImageLayout::eUndefined )
   7925       : sampler( sampler_ )
   7926       , imageView( imageView_ )
   7927       , imageLayout( imageLayout_ )
   7928     {
   7929     }
   7930 
   7931     DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
   7932     {
   7933       memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
   7934     }
   7935 
   7936     DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
   7937     {
   7938       memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
   7939       return *this;
   7940     }
   7941     DescriptorImageInfo& setSampler( Sampler sampler_ )
   7942     {
   7943       sampler = sampler_;
   7944       return *this;
   7945     }
   7946 
   7947     DescriptorImageInfo& setImageView( ImageView imageView_ )
   7948     {
   7949       imageView = imageView_;
   7950       return *this;
   7951     }
   7952 
   7953     DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
   7954     {
   7955       imageLayout = imageLayout_;
   7956       return *this;
   7957     }
   7958 
   7959     operator VkDescriptorImageInfo const&() const
   7960     {
   7961       return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
   7962     }
   7963 
   7964     operator VkDescriptorImageInfo &()
   7965     {
   7966       return *reinterpret_cast<VkDescriptorImageInfo*>(this);
   7967     }
   7968 
   7969     bool operator==( DescriptorImageInfo const& rhs ) const
   7970     {
   7971       return ( sampler == rhs.sampler )
   7972           && ( imageView == rhs.imageView )
   7973           && ( imageLayout == rhs.imageLayout );
   7974     }
   7975 
   7976     bool operator!=( DescriptorImageInfo const& rhs ) const
   7977     {
   7978       return !operator==( rhs );
   7979     }
   7980 
   7981     Sampler sampler;
   7982     ImageView imageView;
   7983     ImageLayout imageLayout;
   7984   };
   7985   static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
   7986 
   7987   struct AttachmentReference
   7988   {
   7989     AttachmentReference( uint32_t attachment_ = 0,
   7990                          ImageLayout layout_ = ImageLayout::eUndefined )
   7991       : attachment( attachment_ )
   7992       , layout( layout_ )
   7993     {
   7994     }
   7995 
   7996     AttachmentReference( VkAttachmentReference const & rhs )
   7997     {
   7998       memcpy( this, &rhs, sizeof( AttachmentReference ) );
   7999     }
   8000 
   8001     AttachmentReference& operator=( VkAttachmentReference const & rhs )
   8002     {
   8003       memcpy( this, &rhs, sizeof( AttachmentReference ) );
   8004       return *this;
   8005     }
   8006     AttachmentReference& setAttachment( uint32_t attachment_ )
   8007     {
   8008       attachment = attachment_;
   8009       return *this;
   8010     }
   8011 
   8012     AttachmentReference& setLayout( ImageLayout layout_ )
   8013     {
   8014       layout = layout_;
   8015       return *this;
   8016     }
   8017 
   8018     operator VkAttachmentReference const&() const
   8019     {
   8020       return *reinterpret_cast<const VkAttachmentReference*>(this);
   8021     }
   8022 
   8023     operator VkAttachmentReference &()
   8024     {
   8025       return *reinterpret_cast<VkAttachmentReference*>(this);
   8026     }
   8027 
   8028     bool operator==( AttachmentReference const& rhs ) const
   8029     {
   8030       return ( attachment == rhs.attachment )
   8031           && ( layout == rhs.layout );
   8032     }
   8033 
   8034     bool operator!=( AttachmentReference const& rhs ) const
   8035     {
   8036       return !operator==( rhs );
   8037     }
   8038 
   8039     uint32_t attachment;
   8040     ImageLayout layout;
   8041   };
   8042   static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
   8043 
   8044   enum class AttachmentLoadOp
   8045   {
   8046     eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
   8047     eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
   8048     eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
   8049   };
   8050 
   8051   enum class AttachmentStoreOp
   8052   {
   8053     eStore = VK_ATTACHMENT_STORE_OP_STORE,
   8054     eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
   8055   };
   8056 
   8057   enum class ImageType
   8058   {
   8059     e1D = VK_IMAGE_TYPE_1D,
   8060     e2D = VK_IMAGE_TYPE_2D,
   8061     e3D = VK_IMAGE_TYPE_3D
   8062   };
   8063 
   8064   enum class ImageTiling
   8065   {
   8066     eOptimal = VK_IMAGE_TILING_OPTIMAL,
   8067     eLinear = VK_IMAGE_TILING_LINEAR,
   8068     eDrmFormatModifierEXT = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
   8069   };
   8070 
   8071   enum class ImageViewType
   8072   {
   8073     e1D = VK_IMAGE_VIEW_TYPE_1D,
   8074     e2D = VK_IMAGE_VIEW_TYPE_2D,
   8075     e3D = VK_IMAGE_VIEW_TYPE_3D,
   8076     eCube = VK_IMAGE_VIEW_TYPE_CUBE,
   8077     e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
   8078     e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
   8079     eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
   8080   };
   8081 
   8082   enum class CommandBufferLevel
   8083   {
   8084     ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
   8085     eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
   8086   };
   8087 
   8088   enum class ComponentSwizzle
   8089   {
   8090     eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
   8091     eZero = VK_COMPONENT_SWIZZLE_ZERO,
   8092     eOne = VK_COMPONENT_SWIZZLE_ONE,
   8093     eR = VK_COMPONENT_SWIZZLE_R,
   8094     eG = VK_COMPONENT_SWIZZLE_G,
   8095     eB = VK_COMPONENT_SWIZZLE_B,
   8096     eA = VK_COMPONENT_SWIZZLE_A
   8097   };
   8098 
   8099   struct ComponentMapping
   8100   {
   8101     ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity,
   8102                       ComponentSwizzle g_ = ComponentSwizzle::eIdentity,
   8103                       ComponentSwizzle b_ = ComponentSwizzle::eIdentity,
   8104                       ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
   8105       : r( r_ )
   8106       , g( g_ )
   8107       , b( b_ )
   8108       , a( a_ )
   8109     {
   8110     }
   8111 
   8112     ComponentMapping( VkComponentMapping const & rhs )
   8113     {
   8114       memcpy( this, &rhs, sizeof( ComponentMapping ) );
   8115     }
   8116 
   8117     ComponentMapping& operator=( VkComponentMapping const & rhs )
   8118     {
   8119       memcpy( this, &rhs, sizeof( ComponentMapping ) );
   8120       return *this;
   8121     }
   8122     ComponentMapping& setR( ComponentSwizzle r_ )
   8123     {
   8124       r = r_;
   8125       return *this;
   8126     }
   8127 
   8128     ComponentMapping& setG( ComponentSwizzle g_ )
   8129     {
   8130       g = g_;
   8131       return *this;
   8132     }
   8133 
   8134     ComponentMapping& setB( ComponentSwizzle b_ )
   8135     {
   8136       b = b_;
   8137       return *this;
   8138     }
   8139 
   8140     ComponentMapping& setA( ComponentSwizzle a_ )
   8141     {
   8142       a = a_;
   8143       return *this;
   8144     }
   8145 
   8146     operator VkComponentMapping const&() const
   8147     {
   8148       return *reinterpret_cast<const VkComponentMapping*>(this);
   8149     }
   8150 
   8151     operator VkComponentMapping &()
   8152     {
   8153       return *reinterpret_cast<VkComponentMapping*>(this);
   8154     }
   8155 
   8156     bool operator==( ComponentMapping const& rhs ) const
   8157     {
   8158       return ( r == rhs.r )
   8159           && ( g == rhs.g )
   8160           && ( b == rhs.b )
   8161           && ( a == rhs.a );
   8162     }
   8163 
   8164     bool operator!=( ComponentMapping const& rhs ) const
   8165     {
   8166       return !operator==( rhs );
   8167     }
   8168 
   8169     ComponentSwizzle r;
   8170     ComponentSwizzle g;
   8171     ComponentSwizzle b;
   8172     ComponentSwizzle a;
   8173   };
   8174   static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
   8175 
   8176   enum class DescriptorType
   8177   {
   8178     eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
   8179     eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
   8180     eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
   8181     eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
   8182     eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
   8183     eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
   8184     eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
   8185     eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
   8186     eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
   8187     eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
   8188     eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
   8189     eInlineUniformBlockEXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT,
   8190     eAccelerationStructureNV = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
   8191   };
   8192 
   8193   struct DescriptorPoolSize
   8194   {
   8195     DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler,
   8196                         uint32_t descriptorCount_ = 0 )
   8197       : type( type_ )
   8198       , descriptorCount( descriptorCount_ )
   8199     {
   8200     }
   8201 
   8202     DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
   8203     {
   8204       memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
   8205     }
   8206 
   8207     DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
   8208     {
   8209       memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
   8210       return *this;
   8211     }
   8212     DescriptorPoolSize& setType( DescriptorType type_ )
   8213     {
   8214       type = type_;
   8215       return *this;
   8216     }
   8217 
   8218     DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
   8219     {
   8220       descriptorCount = descriptorCount_;
   8221       return *this;
   8222     }
   8223 
   8224     operator VkDescriptorPoolSize const&() const
   8225     {
   8226       return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
   8227     }
   8228 
   8229     operator VkDescriptorPoolSize &()
   8230     {
   8231       return *reinterpret_cast<VkDescriptorPoolSize*>(this);
   8232     }
   8233 
   8234     bool operator==( DescriptorPoolSize const& rhs ) const
   8235     {
   8236       return ( type == rhs.type )
   8237           && ( descriptorCount == rhs.descriptorCount );
   8238     }
   8239 
   8240     bool operator!=( DescriptorPoolSize const& rhs ) const
   8241     {
   8242       return !operator==( rhs );
   8243     }
   8244 
   8245     DescriptorType type;
   8246     uint32_t descriptorCount;
   8247   };
   8248   static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
   8249 
   8250   struct DescriptorUpdateTemplateEntry
   8251   {
   8252     DescriptorUpdateTemplateEntry( uint32_t dstBinding_ = 0,
   8253                                    uint32_t dstArrayElement_ = 0,
   8254                                    uint32_t descriptorCount_ = 0,
   8255                                    DescriptorType descriptorType_ = DescriptorType::eSampler,
   8256                                    size_t offset_ = 0,
   8257                                    size_t stride_ = 0 )
   8258       : dstBinding( dstBinding_ )
   8259       , dstArrayElement( dstArrayElement_ )
   8260       , descriptorCount( descriptorCount_ )
   8261       , descriptorType( descriptorType_ )
   8262       , offset( offset_ )
   8263       , stride( stride_ )
   8264     {
   8265     }
   8266 
   8267     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs )
   8268     {
   8269       memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
   8270     }
   8271 
   8272     DescriptorUpdateTemplateEntry& operator=( VkDescriptorUpdateTemplateEntry const & rhs )
   8273     {
   8274       memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
   8275       return *this;
   8276     }
   8277     DescriptorUpdateTemplateEntry& setDstBinding( uint32_t dstBinding_ )
   8278     {
   8279       dstBinding = dstBinding_;
   8280       return *this;
   8281     }
   8282 
   8283     DescriptorUpdateTemplateEntry& setDstArrayElement( uint32_t dstArrayElement_ )
   8284     {
   8285       dstArrayElement = dstArrayElement_;
   8286       return *this;
   8287     }
   8288 
   8289     DescriptorUpdateTemplateEntry& setDescriptorCount( uint32_t descriptorCount_ )
   8290     {
   8291       descriptorCount = descriptorCount_;
   8292       return *this;
   8293     }
   8294 
   8295     DescriptorUpdateTemplateEntry& setDescriptorType( DescriptorType descriptorType_ )
   8296     {
   8297       descriptorType = descriptorType_;
   8298       return *this;
   8299     }
   8300 
   8301     DescriptorUpdateTemplateEntry& setOffset( size_t offset_ )
   8302     {
   8303       offset = offset_;
   8304       return *this;
   8305     }
   8306 
   8307     DescriptorUpdateTemplateEntry& setStride( size_t stride_ )
   8308     {
   8309       stride = stride_;
   8310       return *this;
   8311     }
   8312 
   8313     operator VkDescriptorUpdateTemplateEntry const&() const
   8314     {
   8315       return *reinterpret_cast<const VkDescriptorUpdateTemplateEntry*>(this);
   8316     }
   8317 
   8318     operator VkDescriptorUpdateTemplateEntry &()
   8319     {
   8320       return *reinterpret_cast<VkDescriptorUpdateTemplateEntry*>(this);
   8321     }
   8322 
   8323     bool operator==( DescriptorUpdateTemplateEntry const& rhs ) const
   8324     {
   8325       return ( dstBinding == rhs.dstBinding )
   8326           && ( dstArrayElement == rhs.dstArrayElement )
   8327           && ( descriptorCount == rhs.descriptorCount )
   8328           && ( descriptorType == rhs.descriptorType )
   8329           && ( offset == rhs.offset )
   8330           && ( stride == rhs.stride );
   8331     }
   8332 
   8333     bool operator!=( DescriptorUpdateTemplateEntry const& rhs ) const
   8334     {
   8335       return !operator==( rhs );
   8336     }
   8337 
   8338     uint32_t dstBinding;
   8339     uint32_t dstArrayElement;
   8340     uint32_t descriptorCount;
   8341     DescriptorType descriptorType;
   8342     size_t offset;
   8343     size_t stride;
   8344   };
   8345   static_assert( sizeof( DescriptorUpdateTemplateEntry ) == sizeof( VkDescriptorUpdateTemplateEntry ), "struct and wrapper have different size!" );
   8346 
   8347   using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
   8348 
   8349   enum class QueryType
   8350   {
   8351     eOcclusion = VK_QUERY_TYPE_OCCLUSION,
   8352     ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
   8353     eTimestamp = VK_QUERY_TYPE_TIMESTAMP,
   8354     eTransformFeedbackStreamEXT = VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT,
   8355     eAccelerationStructureCompactedSizeNV = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
   8356   };
   8357 
   8358   enum class BorderColor
   8359   {
   8360     eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
   8361     eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
   8362     eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
   8363     eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
   8364     eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
   8365     eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
   8366   };
   8367 
   8368   enum class PipelineBindPoint
   8369   {
   8370     eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
   8371     eCompute = VK_PIPELINE_BIND_POINT_COMPUTE,
   8372     eRayTracingNV = VK_PIPELINE_BIND_POINT_RAY_TRACING_NV
   8373   };
   8374 
   8375   enum class PipelineCacheHeaderVersion
   8376   {
   8377     eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
   8378   };
   8379 
   8380   enum class PrimitiveTopology
   8381   {
   8382     ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
   8383     eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
   8384     eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
   8385     eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
   8386     eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
   8387     eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
   8388     eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
   8389     eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
   8390     eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
   8391     eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
   8392     ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
   8393   };
   8394 
   8395   enum class SharingMode
   8396   {
   8397     eExclusive = VK_SHARING_MODE_EXCLUSIVE,
   8398     eConcurrent = VK_SHARING_MODE_CONCURRENT
   8399   };
   8400 
   8401   enum class IndexType
   8402   {
   8403     eUint16 = VK_INDEX_TYPE_UINT16,
   8404     eUint32 = VK_INDEX_TYPE_UINT32,
   8405     eNoneNV = VK_INDEX_TYPE_NONE_NV
   8406   };
   8407 
   8408   enum class Filter
   8409   {
   8410     eNearest = VK_FILTER_NEAREST,
   8411     eLinear = VK_FILTER_LINEAR,
   8412     eCubicIMG = VK_FILTER_CUBIC_IMG
   8413   };
   8414 
   8415   enum class SamplerMipmapMode
   8416   {
   8417     eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
   8418     eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
   8419   };
   8420 
   8421   enum class SamplerAddressMode
   8422   {
   8423     eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
   8424     eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
   8425     eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
   8426     eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
   8427     eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
   8428   };
   8429 
   8430   enum class CompareOp
   8431   {
   8432     eNever = VK_COMPARE_OP_NEVER,
   8433     eLess = VK_COMPARE_OP_LESS,
   8434     eEqual = VK_COMPARE_OP_EQUAL,
   8435     eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
   8436     eGreater = VK_COMPARE_OP_GREATER,
   8437     eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
   8438     eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
   8439     eAlways = VK_COMPARE_OP_ALWAYS
   8440   };
   8441 
   8442   enum class PolygonMode
   8443   {
   8444     eFill = VK_POLYGON_MODE_FILL,
   8445     eLine = VK_POLYGON_MODE_LINE,
   8446     ePoint = VK_POLYGON_MODE_POINT,
   8447     eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
   8448   };
   8449 
   8450   enum class CullModeFlagBits
   8451   {
   8452     eNone = VK_CULL_MODE_NONE,
   8453     eFront = VK_CULL_MODE_FRONT_BIT,
   8454     eBack = VK_CULL_MODE_BACK_BIT,
   8455     eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
   8456   };
   8457 
   8458   using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
   8459 
   8460   VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
   8461   {
   8462     return CullModeFlags( bit0 ) | bit1;
   8463   }
   8464 
   8465   VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
   8466   {
   8467     return ~( CullModeFlags( bits ) );
   8468   }
   8469 
   8470   template <> struct FlagTraits<CullModeFlagBits>
   8471   {
   8472     enum
   8473     {
   8474       allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
   8475     };
   8476   };
   8477 
   8478   enum class FrontFace
   8479   {
   8480     eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
   8481     eClockwise = VK_FRONT_FACE_CLOCKWISE
   8482   };
   8483 
   8484   enum class BlendFactor
   8485   {
   8486     eZero = VK_BLEND_FACTOR_ZERO,
   8487     eOne = VK_BLEND_FACTOR_ONE,
   8488     eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
   8489     eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
   8490     eDstColor = VK_BLEND_FACTOR_DST_COLOR,
   8491     eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
   8492     eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
   8493     eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
   8494     eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
   8495     eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
   8496     eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
   8497     eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
   8498     eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
   8499     eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
   8500     eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
   8501     eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
   8502     eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
   8503     eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
   8504     eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
   8505   };
   8506 
   8507   enum class BlendOp
   8508   {
   8509     eAdd = VK_BLEND_OP_ADD,
   8510     eSubtract = VK_BLEND_OP_SUBTRACT,
   8511     eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
   8512     eMin = VK_BLEND_OP_MIN,
   8513     eMax = VK_BLEND_OP_MAX,
   8514     eZeroEXT = VK_BLEND_OP_ZERO_EXT,
   8515     eSrcEXT = VK_BLEND_OP_SRC_EXT,
   8516     eDstEXT = VK_BLEND_OP_DST_EXT,
   8517     eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
   8518     eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
   8519     eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
   8520     eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
   8521     eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
   8522     eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
   8523     eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
   8524     eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
   8525     eXorEXT = VK_BLEND_OP_XOR_EXT,
   8526     eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
   8527     eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
   8528     eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
   8529     eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
   8530     eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
   8531     eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
   8532     eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
   8533     eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
   8534     eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
   8535     eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
   8536     eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
   8537     eInvertEXT = VK_BLEND_OP_INVERT_EXT,
   8538     eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
   8539     eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
   8540     eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
   8541     eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
   8542     eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
   8543     ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
   8544     eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
   8545     eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
   8546     eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
   8547     eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
   8548     eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
   8549     ePlusEXT = VK_BLEND_OP_PLUS_EXT,
   8550     ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
   8551     ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
   8552     ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
   8553     eMinusEXT = VK_BLEND_OP_MINUS_EXT,
   8554     eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
   8555     eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
   8556     eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
   8557     eRedEXT = VK_BLEND_OP_RED_EXT,
   8558     eGreenEXT = VK_BLEND_OP_GREEN_EXT,
   8559     eBlueEXT = VK_BLEND_OP_BLUE_EXT
   8560   };
   8561 
   8562   enum class StencilOp
   8563   {
   8564     eKeep = VK_STENCIL_OP_KEEP,
   8565     eZero = VK_STENCIL_OP_ZERO,
   8566     eReplace = VK_STENCIL_OP_REPLACE,
   8567     eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
   8568     eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
   8569     eInvert = VK_STENCIL_OP_INVERT,
   8570     eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
   8571     eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
   8572   };
   8573 
   8574   struct StencilOpState
   8575   {
   8576     StencilOpState( StencilOp failOp_ = StencilOp::eKeep,
   8577                     StencilOp passOp_ = StencilOp::eKeep,
   8578                     StencilOp depthFailOp_ = StencilOp::eKeep,
   8579                     CompareOp compareOp_ = CompareOp::eNever,
   8580                     uint32_t compareMask_ = 0,
   8581                     uint32_t writeMask_ = 0,
   8582                     uint32_t reference_ = 0 )
   8583       : failOp( failOp_ )
   8584       , passOp( passOp_ )
   8585       , depthFailOp( depthFailOp_ )
   8586       , compareOp( compareOp_ )
   8587       , compareMask( compareMask_ )
   8588       , writeMask( writeMask_ )
   8589       , reference( reference_ )
   8590     {
   8591     }
   8592 
   8593     StencilOpState( VkStencilOpState const & rhs )
   8594     {
   8595       memcpy( this, &rhs, sizeof( StencilOpState ) );
   8596     }
   8597 
   8598     StencilOpState& operator=( VkStencilOpState const & rhs )
   8599     {
   8600       memcpy( this, &rhs, sizeof( StencilOpState ) );
   8601       return *this;
   8602     }
   8603     StencilOpState& setFailOp( StencilOp failOp_ )
   8604     {
   8605       failOp = failOp_;
   8606       return *this;
   8607     }
   8608 
   8609     StencilOpState& setPassOp( StencilOp passOp_ )
   8610     {
   8611       passOp = passOp_;
   8612       return *this;
   8613     }
   8614 
   8615     StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
   8616     {
   8617       depthFailOp = depthFailOp_;
   8618       return *this;
   8619     }
   8620 
   8621     StencilOpState& setCompareOp( CompareOp compareOp_ )
   8622     {
   8623       compareOp = compareOp_;
   8624       return *this;
   8625     }
   8626 
   8627     StencilOpState& setCompareMask( uint32_t compareMask_ )
   8628     {
   8629       compareMask = compareMask_;
   8630       return *this;
   8631     }
   8632 
   8633     StencilOpState& setWriteMask( uint32_t writeMask_ )
   8634     {
   8635       writeMask = writeMask_;
   8636       return *this;
   8637     }
   8638 
   8639     StencilOpState& setReference( uint32_t reference_ )
   8640     {
   8641       reference = reference_;
   8642       return *this;
   8643     }
   8644 
   8645     operator VkStencilOpState const&() const
   8646     {
   8647       return *reinterpret_cast<const VkStencilOpState*>(this);
   8648     }
   8649 
   8650     operator VkStencilOpState &()
   8651     {
   8652       return *reinterpret_cast<VkStencilOpState*>(this);
   8653     }
   8654 
   8655     bool operator==( StencilOpState const& rhs ) const
   8656     {
   8657       return ( failOp == rhs.failOp )
   8658           && ( passOp == rhs.passOp )
   8659           && ( depthFailOp == rhs.depthFailOp )
   8660           && ( compareOp == rhs.compareOp )
   8661           && ( compareMask == rhs.compareMask )
   8662           && ( writeMask == rhs.writeMask )
   8663           && ( reference == rhs.reference );
   8664     }
   8665 
   8666     bool operator!=( StencilOpState const& rhs ) const
   8667     {
   8668       return !operator==( rhs );
   8669     }
   8670 
   8671     StencilOp failOp;
   8672     StencilOp passOp;
   8673     StencilOp depthFailOp;
   8674     CompareOp compareOp;
   8675     uint32_t compareMask;
   8676     uint32_t writeMask;
   8677     uint32_t reference;
   8678   };
   8679   static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
   8680 
   8681   enum class LogicOp
   8682   {
   8683     eClear = VK_LOGIC_OP_CLEAR,
   8684     eAnd = VK_LOGIC_OP_AND,
   8685     eAndReverse = VK_LOGIC_OP_AND_REVERSE,
   8686     eCopy = VK_LOGIC_OP_COPY,
   8687     eAndInverted = VK_LOGIC_OP_AND_INVERTED,
   8688     eNoOp = VK_LOGIC_OP_NO_OP,
   8689     eXor = VK_LOGIC_OP_XOR,
   8690     eOr = VK_LOGIC_OP_OR,
   8691     eNor = VK_LOGIC_OP_NOR,
   8692     eEquivalent = VK_LOGIC_OP_EQUIVALENT,
   8693     eInvert = VK_LOGIC_OP_INVERT,
   8694     eOrReverse = VK_LOGIC_OP_OR_REVERSE,
   8695     eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
   8696     eOrInverted = VK_LOGIC_OP_OR_INVERTED,
   8697     eNand = VK_LOGIC_OP_NAND,
   8698     eSet = VK_LOGIC_OP_SET
   8699   };
   8700 
   8701   enum class InternalAllocationType
   8702   {
   8703     eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
   8704   };
   8705 
   8706   enum class SystemAllocationScope
   8707   {
   8708     eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
   8709     eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
   8710     eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
   8711     eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
   8712     eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
   8713   };
   8714 
   8715   enum class PhysicalDeviceType
   8716   {
   8717     eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
   8718     eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
   8719     eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
   8720     eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
   8721     eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
   8722   };
   8723 
   8724   enum class VertexInputRate
   8725   {
   8726     eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
   8727     eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
   8728   };
   8729 
   8730   struct VertexInputBindingDescription
   8731   {
   8732     VertexInputBindingDescription( uint32_t binding_ = 0,
   8733                                    uint32_t stride_ = 0,
   8734                                    VertexInputRate inputRate_ = VertexInputRate::eVertex )
   8735       : binding( binding_ )
   8736       , stride( stride_ )
   8737       , inputRate( inputRate_ )
   8738     {
   8739     }
   8740 
   8741     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
   8742     {
   8743       memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
   8744     }
   8745 
   8746     VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
   8747     {
   8748       memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
   8749       return *this;
   8750     }
   8751     VertexInputBindingDescription& setBinding( uint32_t binding_ )
   8752     {
   8753       binding = binding_;
   8754       return *this;
   8755     }
   8756 
   8757     VertexInputBindingDescription& setStride( uint32_t stride_ )
   8758     {
   8759       stride = stride_;
   8760       return *this;
   8761     }
   8762 
   8763     VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
   8764     {
   8765       inputRate = inputRate_;
   8766       return *this;
   8767     }
   8768 
   8769     operator VkVertexInputBindingDescription const&() const
   8770     {
   8771       return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
   8772     }
   8773 
   8774     operator VkVertexInputBindingDescription &()
   8775     {
   8776       return *reinterpret_cast<VkVertexInputBindingDescription*>(this);
   8777     }
   8778 
   8779     bool operator==( VertexInputBindingDescription const& rhs ) const
   8780     {
   8781       return ( binding == rhs.binding )
   8782           && ( stride == rhs.stride )
   8783           && ( inputRate == rhs.inputRate );
   8784     }
   8785 
   8786     bool operator!=( VertexInputBindingDescription const& rhs ) const
   8787     {
   8788       return !operator==( rhs );
   8789     }
   8790 
   8791     uint32_t binding;
   8792     uint32_t stride;
   8793     VertexInputRate inputRate;
   8794   };
   8795   static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
   8796 
   8797   enum class Format
   8798   {
   8799     eUndefined = VK_FORMAT_UNDEFINED,
   8800     eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
   8801     eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
   8802     eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
   8803     eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
   8804     eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
   8805     eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
   8806     eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
   8807     eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
   8808     eR8Unorm = VK_FORMAT_R8_UNORM,
   8809     eR8Snorm = VK_FORMAT_R8_SNORM,
   8810     eR8Uscaled = VK_FORMAT_R8_USCALED,
   8811     eR8Sscaled = VK_FORMAT_R8_SSCALED,
   8812     eR8Uint = VK_FORMAT_R8_UINT,
   8813     eR8Sint = VK_FORMAT_R8_SINT,
   8814     eR8Srgb = VK_FORMAT_R8_SRGB,
   8815     eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
   8816     eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
   8817     eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
   8818     eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
   8819     eR8G8Uint = VK_FORMAT_R8G8_UINT,
   8820     eR8G8Sint = VK_FORMAT_R8G8_SINT,
   8821     eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
   8822     eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
   8823     eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
   8824     eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
   8825     eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
   8826     eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
   8827     eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
   8828     eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
   8829     eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
   8830     eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
   8831     eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
   8832     eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
   8833     eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
   8834     eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
   8835     eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
   8836     eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
   8837     eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
   8838     eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
   8839     eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
   8840     eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
   8841     eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
   8842     eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
   8843     eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
   8844     eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
   8845     eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
   8846     eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
   8847     eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
   8848     eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
   8849     eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
   8850     eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
   8851     eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
   8852     eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
   8853     eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
   8854     eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
   8855     eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
   8856     eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
   8857     eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
   8858     eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
   8859     eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
   8860     eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
   8861     eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
   8862     eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
   8863     eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
   8864     eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
   8865     eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
   8866     eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
   8867     eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
   8868     eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
   8869     eR16Unorm = VK_FORMAT_R16_UNORM,
   8870     eR16Snorm = VK_FORMAT_R16_SNORM,
   8871     eR16Uscaled = VK_FORMAT_R16_USCALED,
   8872     eR16Sscaled = VK_FORMAT_R16_SSCALED,
   8873     eR16Uint = VK_FORMAT_R16_UINT,
   8874     eR16Sint = VK_FORMAT_R16_SINT,
   8875     eR16Sfloat = VK_FORMAT_R16_SFLOAT,
   8876     eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
   8877     eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
   8878     eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
   8879     eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
   8880     eR16G16Uint = VK_FORMAT_R16G16_UINT,
   8881     eR16G16Sint = VK_FORMAT_R16G16_SINT,
   8882     eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
   8883     eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
   8884     eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
   8885     eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
   8886     eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
   8887     eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
   8888     eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
   8889     eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
   8890     eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
   8891     eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
   8892     eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
   8893     eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
   8894     eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
   8895     eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
   8896     eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
   8897     eR32Uint = VK_FORMAT_R32_UINT,
   8898     eR32Sint = VK_FORMAT_R32_SINT,
   8899     eR32Sfloat = VK_FORMAT_R32_SFLOAT,
   8900     eR32G32Uint = VK_FORMAT_R32G32_UINT,
   8901     eR32G32Sint = VK_FORMAT_R32G32_SINT,
   8902     eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
   8903     eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
   8904     eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
   8905     eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
   8906     eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
   8907     eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
   8908     eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
   8909     eR64Uint = VK_FORMAT_R64_UINT,
   8910     eR64Sint = VK_FORMAT_R64_SINT,
   8911     eR64Sfloat = VK_FORMAT_R64_SFLOAT,
   8912     eR64G64Uint = VK_FORMAT_R64G64_UINT,
   8913     eR64G64Sint = VK_FORMAT_R64G64_SINT,
   8914     eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
   8915     eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
   8916     eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
   8917     eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
   8918     eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
   8919     eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
   8920     eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
   8921     eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
   8922     eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
   8923     eD16Unorm = VK_FORMAT_D16_UNORM,
   8924     eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
   8925     eD32Sfloat = VK_FORMAT_D32_SFLOAT,
   8926     eS8Uint = VK_FORMAT_S8_UINT,
   8927     eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
   8928     eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
   8929     eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
   8930     eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
   8931     eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
   8932     eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
   8933     eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
   8934     eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
   8935     eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
   8936     eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
   8937     eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
   8938     eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
   8939     eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
   8940     eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
   8941     eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
   8942     eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
   8943     eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
   8944     eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
   8945     eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
   8946     eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
   8947     eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
   8948     eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
   8949     eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
   8950     eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
   8951     eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
   8952     eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
   8953     eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
   8954     eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
   8955     eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
   8956     eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
   8957     eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
   8958     eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
   8959     eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
   8960     eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
   8961     eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
   8962     eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
   8963     eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
   8964     eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
   8965     eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
   8966     eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
   8967     eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
   8968     eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
   8969     eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
   8970     eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
   8971     eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
   8972     eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
   8973     eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
   8974     eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
   8975     eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
   8976     eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
   8977     eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
   8978     eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
   8979     eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
   8980     eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
   8981     eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
   8982     eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
   8983     eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
   8984     eG8B8G8R8422Unorm = VK_FORMAT_G8B8G8R8_422_UNORM,
   8985     eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM,
   8986     eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM,
   8987     eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM,
   8988     eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
   8989     eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
   8990     eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
   8991     eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
   8992     eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
   8993     eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
   8994     eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
   8995     eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
   8996     eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
   8997     eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
   8998     eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16,
   8999     eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16,
   9000     eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
   9001     eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
   9002     eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
   9003     eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
   9004     eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
   9005     eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
   9006     eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
   9007     eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
   9008     eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
   9009     eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
   9010     eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
   9011     eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
   9012     eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
   9013     eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
   9014     eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
   9015     eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
   9016     eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
   9017     eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
   9018     eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16,
   9019     eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16,
   9020     eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
   9021     eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
   9022     eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
   9023     eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
   9024     eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
   9025     eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
   9026     eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
   9027     eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
   9028     eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
   9029     eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
   9030     eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
   9031     eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
   9032     eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
   9033     eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
   9034     eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
   9035     eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
   9036     eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
   9037     eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
   9038     eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM,
   9039     eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM,
   9040     eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM,
   9041     eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM,
   9042     eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
   9043     eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
   9044     eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
   9045     eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
   9046     eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
   9047     eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
   9048     eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
   9049     eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
   9050     eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
   9051     eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
   9052     ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
   9053     ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
   9054     ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
   9055     ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
   9056     ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
   9057     ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
   9058     ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
   9059     ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
   9060   };
   9061 
   9062   struct VertexInputAttributeDescription
   9063   {
   9064     VertexInputAttributeDescription( uint32_t location_ = 0,
   9065                                      uint32_t binding_ = 0,
   9066                                      Format format_ = Format::eUndefined,
   9067                                      uint32_t offset_ = 0 )
   9068       : location( location_ )
   9069       , binding( binding_ )
   9070       , format( format_ )
   9071       , offset( offset_ )
   9072     {
   9073     }
   9074 
   9075     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
   9076     {
   9077       memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
   9078     }
   9079 
   9080     VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
   9081     {
   9082       memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
   9083       return *this;
   9084     }
   9085     VertexInputAttributeDescription& setLocation( uint32_t location_ )
   9086     {
   9087       location = location_;
   9088       return *this;
   9089     }
   9090 
   9091     VertexInputAttributeDescription& setBinding( uint32_t binding_ )
   9092     {
   9093       binding = binding_;
   9094       return *this;
   9095     }
   9096 
   9097     VertexInputAttributeDescription& setFormat( Format format_ )
   9098     {
   9099       format = format_;
   9100       return *this;
   9101     }
   9102 
   9103     VertexInputAttributeDescription& setOffset( uint32_t offset_ )
   9104     {
   9105       offset = offset_;
   9106       return *this;
   9107     }
   9108 
   9109     operator VkVertexInputAttributeDescription const&() const
   9110     {
   9111       return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
   9112     }
   9113 
   9114     operator VkVertexInputAttributeDescription &()
   9115     {
   9116       return *reinterpret_cast<VkVertexInputAttributeDescription*>(this);
   9117     }
   9118 
   9119     bool operator==( VertexInputAttributeDescription const& rhs ) const
   9120     {
   9121       return ( location == rhs.location )
   9122           && ( binding == rhs.binding )
   9123           && ( format == rhs.format )
   9124           && ( offset == rhs.offset );
   9125     }
   9126 
   9127     bool operator!=( VertexInputAttributeDescription const& rhs ) const
   9128     {
   9129       return !operator==( rhs );
   9130     }
   9131 
   9132     uint32_t location;
   9133     uint32_t binding;
   9134     Format format;
   9135     uint32_t offset;
   9136   };
   9137   static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
   9138 
   9139   enum class StructureType
   9140   {
   9141     eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
   9142     eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
   9143     eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
   9144     eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
   9145     eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
   9146     eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
   9147     eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
   9148     eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
   9149     eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
   9150     eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
   9151     eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
   9152     eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
   9153     eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
   9154     eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
   9155     eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
   9156     eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
   9157     eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
   9158     ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
   9159     ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
   9160     ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
   9161     ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
   9162     ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
   9163     ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
   9164     ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
   9165     ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
   9166     ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
   9167     ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
   9168     ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
   9169     eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
   9170     eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
   9171     ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
   9172     eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
   9173     eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
   9174     eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
   9175     eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
   9176     eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
   9177     eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
   9178     eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
   9179     eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
   9180     eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
   9181     eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
   9182     eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
   9183     eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
   9184     eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
   9185     eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
   9186     eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
   9187     eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
   9188     eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
   9189     eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
   9190     ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
   9191     eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
   9192     eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
   9193     eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
   9194     eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
   9195     ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
   9196     ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
   9197     eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
   9198     eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
   9199     eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
   9200     eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
   9201     eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
   9202     eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
   9203     eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
   9204     eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
   9205     eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
   9206     eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
   9207     eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
   9208     eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
   9209     eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
   9210     eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
   9211     eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
   9212     eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
   9213     eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
   9214     eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
   9215     ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
   9216     ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
   9217     eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
   9218     eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
   9219     eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
   9220     eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
   9221     eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
   9222     eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
   9223     eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
   9224     eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
   9225     eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
   9226     eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
   9227     eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
   9228     eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
   9229     ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
   9230     ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
   9231     ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
   9232     ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
   9233     eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
   9234     eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
   9235     eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
   9236     eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
   9237     ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
   9238     ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
   9239     eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
   9240     eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
   9241     ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
   9242     ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
   9243     eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
   9244     eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
   9245     ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
   9246     ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
   9247     ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
   9248     ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
   9249     eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
   9250     eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
   9251     eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
   9252     eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
   9253     ePipelineTessellationDomainOriginStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
   9254     ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
   9255     eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
   9256     eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
   9257     ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
   9258     ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
   9259     ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
   9260     ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
   9261     ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
   9262     ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
   9263     eProtectedSubmitInfo = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
   9264     ePhysicalDeviceProtectedMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
   9265     ePhysicalDeviceProtectedMemoryProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
   9266     eDeviceQueueInfo2 = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
   9267     eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
   9268     eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
   9269     eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
   9270     eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
   9271     eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
   9272     eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
   9273     eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
   9274     eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
   9275     ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
   9276     ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
   9277     eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
   9278     eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
   9279     eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
   9280     eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
   9281     ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
   9282     ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
   9283     eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
   9284     eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
   9285     ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
   9286     ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
   9287     eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
   9288     eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
   9289     ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
   9290     ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
   9291     eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
   9292     eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
   9293     eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
   9294     eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
   9295     eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
   9296     eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
   9297     ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
   9298     ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
   9299     eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
   9300     eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
   9301     eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
   9302     eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
   9303     eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
   9304     eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
   9305     ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
   9306     ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
   9307     eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
   9308     eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
   9309     ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
   9310     ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
   9311     eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
   9312     eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
   9313     ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES,
   9314     eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
   9315     ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
   9316     eDeviceGroupPresentCapabilitiesKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
   9317     eImageSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
   9318     eBindImageMemorySwapchainInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
   9319     eAcquireNextImageInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
   9320     eDeviceGroupPresentInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
   9321     eDeviceGroupSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
   9322     eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
   9323     eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
   9324     eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
   9325     eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
   9326     eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
   9327     eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
   9328     eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
   9329     eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
   9330     eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
   9331     eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
   9332     ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
   9333     eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
   9334     eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
   9335     eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
   9336     eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
   9337     eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
   9338     eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
   9339     ePhysicalDeviceTransformFeedbackFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
   9340     ePhysicalDeviceTransformFeedbackPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
   9341     ePipelineRasterizationStateStreamCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
   9342     eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
   9343     ePhysicalDeviceCornerSampledImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
   9344     eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
   9345     eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
   9346     eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
   9347     eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
   9348     eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
   9349     eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
   9350     eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
   9351     eImageViewAstcDecodeModeEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
   9352     ePhysicalDeviceAstcDecodeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
   9353     eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
   9354     eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
   9355     eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
   9356     eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
   9357     eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
   9358     eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
   9359     eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
   9360     eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
   9361     eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
   9362     eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
   9363     eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
   9364     eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
   9365     eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
   9366     eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
   9367     ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
   9368     eCommandBufferInheritanceConditionalRenderingInfoEXT = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
   9369     ePhysicalDeviceConditionalRenderingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
   9370     eConditionalRenderingBeginInfoEXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
   9371     ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
   9372     eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
   9373     eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
   9374     eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
   9375     eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
   9376     eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
   9377     eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
   9378     ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
   9379     eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
   9380     eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
   9381     eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
   9382     eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
   9383     eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
   9384     ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
   9385     ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
   9386     ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
   9387     ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
   9388     ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
   9389     ePhysicalDeviceConservativeRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
   9390     ePipelineRasterizationConservativeStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
   9391     eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
   9392     eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR,
   9393     eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR,
   9394     eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR,
   9395     eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR,
   9396     eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR,
   9397     eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR,
   9398     eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR,
   9399     eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
   9400     eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
   9401     eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
   9402     eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
   9403     eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
   9404     eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
   9405     ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
   9406     eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
   9407     eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
   9408     eDisplayProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,
   9409     eDisplayPlaneProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,
   9410     eDisplayModeProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,
   9411     eDisplayPlaneInfo2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,
   9412     eDisplayPlaneCapabilities2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR,
   9413     eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
   9414     eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
   9415     eDebugUtilsObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
   9416     eDebugUtilsObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
   9417     eDebugUtilsLabelEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
   9418     eDebugUtilsMessengerCallbackDataEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
   9419     eDebugUtilsMessengerCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
   9420     eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
   9421     eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
   9422     eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
   9423     eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
   9424     eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
   9425     eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
   9426     ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
   9427     eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
   9428     ePhysicalDeviceInlineUniformBlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
   9429     ePhysicalDeviceInlineUniformBlockPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,
   9430     eWriteDescriptorSetInlineUniformBlockEXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,
   9431     eDescriptorPoolInlineUniformBlockCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,
   9432     eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
   9433     eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
   9434     ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
   9435     ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
   9436     eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
   9437     eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
   9438     ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
   9439     ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
   9440     ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
   9441     ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
   9442     ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
   9443     eDrmFormatModifierPropertiesListEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
   9444     eDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
   9445     ePhysicalDeviceImageDrmFormatModifierInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
   9446     eImageDrmFormatModifierListCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
   9447     eImageDrmFormatModifierExplicitCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
   9448     eImageDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
   9449     eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
   9450     eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
   9451     eDescriptorSetLayoutBindingFlagsCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT,
   9452     ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT,
   9453     ePhysicalDeviceDescriptorIndexingPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT,
   9454     eDescriptorSetVariableDescriptorCountAllocateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT,
   9455     eDescriptorSetVariableDescriptorCountLayoutSupportEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT,
   9456     ePipelineViewportShadingRateImageStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
   9457     ePhysicalDeviceShadingRateImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
   9458     ePhysicalDeviceShadingRateImagePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
   9459     ePipelineViewportCoarseSampleOrderStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
   9460     eRayTracingPipelineCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV,
   9461     eAccelerationStructureCreateInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
   9462     eGeometryNV = VK_STRUCTURE_TYPE_GEOMETRY_NV,
   9463     eGeometryTrianglesNV = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,
   9464     eGeometryAabbNV = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV,
   9465     eBindAccelerationStructureMemoryInfoNV = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
   9466     eWriteDescriptorSetAccelerationStructureNV = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
   9467     eAccelerationStructureMemoryRequirementsInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
   9468     ePhysicalDeviceRayTracingPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
   9469     eRayTracingShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
   9470     eAccelerationStructureInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV,
   9471     ePhysicalDeviceRepresentativeFragmentTestFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
   9472     ePipelineRepresentativeFragmentTestStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
   9473     eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
   9474     ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR,
   9475     eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
   9476     eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
   9477     ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
   9478     ePhysicalDeviceShaderAtomicInt64FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR,
   9479     eCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT,
   9480     ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
   9481     eDeviceMemoryOverallocationCreateInfoAMD = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
   9482     ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
   9483     ePipelineVertexInputDivisorStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
   9484     ePhysicalDeviceVertexAttributeDivisorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,
   9485     ePhysicalDeviceDriverPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR,
   9486     ePhysicalDeviceComputeShaderDerivativesFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,
   9487     ePhysicalDeviceMeshShaderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
   9488     ePhysicalDeviceMeshShaderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
   9489     ePhysicalDeviceFragmentShaderBarycentricFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,
   9490     ePhysicalDeviceShaderImageFootprintFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
   9491     ePipelineViewportExclusiveScissorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
   9492     ePhysicalDeviceExclusiveScissorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
   9493     eCheckpointDataNV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV,
   9494     eQueueFamilyCheckpointPropertiesNV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
   9495     ePhysicalDeviceVulkanMemoryModelFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR,
   9496     ePhysicalDevicePciBusInfoPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
   9497     eImagepipeSurfaceCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
   9498   };
   9499 
   9500   struct ApplicationInfo
   9501   {
   9502     ApplicationInfo( const char* pApplicationName_ = nullptr,
   9503                      uint32_t applicationVersion_ = 0,
   9504                      const char* pEngineName_ = nullptr,
   9505                      uint32_t engineVersion_ = 0,
   9506                      uint32_t apiVersion_ = 0 )
   9507       : pApplicationName( pApplicationName_ )
   9508       , applicationVersion( applicationVersion_ )
   9509       , pEngineName( pEngineName_ )
   9510       , engineVersion( engineVersion_ )
   9511       , apiVersion( apiVersion_ )
   9512     {
   9513     }
   9514 
   9515     ApplicationInfo( VkApplicationInfo const & rhs )
   9516     {
   9517       memcpy( this, &rhs, sizeof( ApplicationInfo ) );
   9518     }
   9519 
   9520     ApplicationInfo& operator=( VkApplicationInfo const & rhs )
   9521     {
   9522       memcpy( this, &rhs, sizeof( ApplicationInfo ) );
   9523       return *this;
   9524     }
   9525     ApplicationInfo& setPNext( const void* pNext_ )
   9526     {
   9527       pNext = pNext_;
   9528       return *this;
   9529     }
   9530 
   9531     ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
   9532     {
   9533       pApplicationName = pApplicationName_;
   9534       return *this;
   9535     }
   9536 
   9537     ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
   9538     {
   9539       applicationVersion = applicationVersion_;
   9540       return *this;
   9541     }
   9542 
   9543     ApplicationInfo& setPEngineName( const char* pEngineName_ )
   9544     {
   9545       pEngineName = pEngineName_;
   9546       return *this;
   9547     }
   9548 
   9549     ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
   9550     {
   9551       engineVersion = engineVersion_;
   9552       return *this;
   9553     }
   9554 
   9555     ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
   9556     {
   9557       apiVersion = apiVersion_;
   9558       return *this;
   9559     }
   9560 
   9561     operator VkApplicationInfo const&() const
   9562     {
   9563       return *reinterpret_cast<const VkApplicationInfo*>(this);
   9564     }
   9565 
   9566     operator VkApplicationInfo &()
   9567     {
   9568       return *reinterpret_cast<VkApplicationInfo*>(this);
   9569     }
   9570 
   9571     bool operator==( ApplicationInfo const& rhs ) const
   9572     {
   9573       return ( sType == rhs.sType )
   9574           && ( pNext == rhs.pNext )
   9575           && ( pApplicationName == rhs.pApplicationName )
   9576           && ( applicationVersion == rhs.applicationVersion )
   9577           && ( pEngineName == rhs.pEngineName )
   9578           && ( engineVersion == rhs.engineVersion )
   9579           && ( apiVersion == rhs.apiVersion );
   9580     }
   9581 
   9582     bool operator!=( ApplicationInfo const& rhs ) const
   9583     {
   9584       return !operator==( rhs );
   9585     }
   9586 
   9587   private:
   9588     StructureType sType = StructureType::eApplicationInfo;
   9589 
   9590   public:
   9591     const void* pNext = nullptr;
   9592     const char* pApplicationName;
   9593     uint32_t applicationVersion;
   9594     const char* pEngineName;
   9595     uint32_t engineVersion;
   9596     uint32_t apiVersion;
   9597   };
   9598   static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
   9599 
   9600   struct InstanceCreateInfo
   9601   {
   9602     InstanceCreateInfo( InstanceCreateFlags flags_ = InstanceCreateFlags(),
   9603                         const ApplicationInfo* pApplicationInfo_ = nullptr,
   9604                         uint32_t enabledLayerCount_ = 0,
   9605                         const char* const* ppEnabledLayerNames_ = nullptr,
   9606                         uint32_t enabledExtensionCount_ = 0,
   9607                         const char* const* ppEnabledExtensionNames_ = nullptr )
   9608       : flags( flags_ )
   9609       , pApplicationInfo( pApplicationInfo_ )
   9610       , enabledLayerCount( enabledLayerCount_ )
   9611       , ppEnabledLayerNames( ppEnabledLayerNames_ )
   9612       , enabledExtensionCount( enabledExtensionCount_ )
   9613       , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
   9614     {
   9615     }
   9616 
   9617     InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
   9618     {
   9619       memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
   9620     }
   9621 
   9622     InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
   9623     {
   9624       memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
   9625       return *this;
   9626     }
   9627     InstanceCreateInfo& setPNext( const void* pNext_ )
   9628     {
   9629       pNext = pNext_;
   9630       return *this;
   9631     }
   9632 
   9633     InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
   9634     {
   9635       flags = flags_;
   9636       return *this;
   9637     }
   9638 
   9639     InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
   9640     {
   9641       pApplicationInfo = pApplicationInfo_;
   9642       return *this;
   9643     }
   9644 
   9645     InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
   9646     {
   9647       enabledLayerCount = enabledLayerCount_;
   9648       return *this;
   9649     }
   9650 
   9651     InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
   9652     {
   9653       ppEnabledLayerNames = ppEnabledLayerNames_;
   9654       return *this;
   9655     }
   9656 
   9657     InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
   9658     {
   9659       enabledExtensionCount = enabledExtensionCount_;
   9660       return *this;
   9661     }
   9662 
   9663     InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
   9664     {
   9665       ppEnabledExtensionNames = ppEnabledExtensionNames_;
   9666       return *this;
   9667     }
   9668 
   9669     operator VkInstanceCreateInfo const&() const
   9670     {
   9671       return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
   9672     }
   9673 
   9674     operator VkInstanceCreateInfo &()
   9675     {
   9676       return *reinterpret_cast<VkInstanceCreateInfo*>(this);
   9677     }
   9678 
   9679     bool operator==( InstanceCreateInfo const& rhs ) const
   9680     {
   9681       return ( sType == rhs.sType )
   9682           && ( pNext == rhs.pNext )
   9683           && ( flags == rhs.flags )
   9684           && ( pApplicationInfo == rhs.pApplicationInfo )
   9685           && ( enabledLayerCount == rhs.enabledLayerCount )
   9686           && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
   9687           && ( enabledExtensionCount == rhs.enabledExtensionCount )
   9688           && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
   9689     }
   9690 
   9691     bool operator!=( InstanceCreateInfo const& rhs ) const
   9692     {
   9693       return !operator==( rhs );
   9694     }
   9695 
   9696   private:
   9697     StructureType sType = StructureType::eInstanceCreateInfo;
   9698 
   9699   public:
   9700     const void* pNext = nullptr;
   9701     InstanceCreateFlags flags;
   9702     const ApplicationInfo* pApplicationInfo;
   9703     uint32_t enabledLayerCount;
   9704     const char* const* ppEnabledLayerNames;
   9705     uint32_t enabledExtensionCount;
   9706     const char* const* ppEnabledExtensionNames;
   9707   };
   9708   static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
   9709 
   9710   struct MemoryAllocateInfo
   9711   {
   9712     MemoryAllocateInfo( DeviceSize allocationSize_ = 0,
   9713                         uint32_t memoryTypeIndex_ = 0 )
   9714       : allocationSize( allocationSize_ )
   9715       , memoryTypeIndex( memoryTypeIndex_ )
   9716     {
   9717     }
   9718 
   9719     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
   9720     {
   9721       memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
   9722     }
   9723 
   9724     MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
   9725     {
   9726       memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
   9727       return *this;
   9728     }
   9729     MemoryAllocateInfo& setPNext( const void* pNext_ )
   9730     {
   9731       pNext = pNext_;
   9732       return *this;
   9733     }
   9734 
   9735     MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
   9736     {
   9737       allocationSize = allocationSize_;
   9738       return *this;
   9739     }
   9740 
   9741     MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
   9742     {
   9743       memoryTypeIndex = memoryTypeIndex_;
   9744       return *this;
   9745     }
   9746 
   9747     operator VkMemoryAllocateInfo const&() const
   9748     {
   9749       return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
   9750     }
   9751 
   9752     operator VkMemoryAllocateInfo &()
   9753     {
   9754       return *reinterpret_cast<VkMemoryAllocateInfo*>(this);
   9755     }
   9756 
   9757     bool operator==( MemoryAllocateInfo const& rhs ) const
   9758     {
   9759       return ( sType == rhs.sType )
   9760           && ( pNext == rhs.pNext )
   9761           && ( allocationSize == rhs.allocationSize )
   9762           && ( memoryTypeIndex == rhs.memoryTypeIndex );
   9763     }
   9764 
   9765     bool operator!=( MemoryAllocateInfo const& rhs ) const
   9766     {
   9767       return !operator==( rhs );
   9768     }
   9769 
   9770   private:
   9771     StructureType sType = StructureType::eMemoryAllocateInfo;
   9772 
   9773   public:
   9774     const void* pNext = nullptr;
   9775     DeviceSize allocationSize;
   9776     uint32_t memoryTypeIndex;
   9777   };
   9778   static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
   9779 
   9780   struct MappedMemoryRange
   9781   {
   9782     MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(),
   9783                        DeviceSize offset_ = 0,
   9784                        DeviceSize size_ = 0 )
   9785       : memory( memory_ )
   9786       , offset( offset_ )
   9787       , size( size_ )
   9788     {
   9789     }
   9790 
   9791     MappedMemoryRange( VkMappedMemoryRange const & rhs )
   9792     {
   9793       memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
   9794     }
   9795 
   9796     MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
   9797     {
   9798       memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
   9799       return *this;
   9800     }
   9801     MappedMemoryRange& setPNext( const void* pNext_ )
   9802     {
   9803       pNext = pNext_;
   9804       return *this;
   9805     }
   9806 
   9807     MappedMemoryRange& setMemory( DeviceMemory memory_ )
   9808     {
   9809       memory = memory_;
   9810       return *this;
   9811     }
   9812 
   9813     MappedMemoryRange& setOffset( DeviceSize offset_ )
   9814     {
   9815       offset = offset_;
   9816       return *this;
   9817     }
   9818 
   9819     MappedMemoryRange& setSize( DeviceSize size_ )
   9820     {
   9821       size = size_;
   9822       return *this;
   9823     }
   9824 
   9825     operator VkMappedMemoryRange const&() const
   9826     {
   9827       return *reinterpret_cast<const VkMappedMemoryRange*>(this);
   9828     }
   9829 
   9830     operator VkMappedMemoryRange &()
   9831     {
   9832       return *reinterpret_cast<VkMappedMemoryRange*>(this);
   9833     }
   9834 
   9835     bool operator==( MappedMemoryRange const& rhs ) const
   9836     {
   9837       return ( sType == rhs.sType )
   9838           && ( pNext == rhs.pNext )
   9839           && ( memory == rhs.memory )
   9840           && ( offset == rhs.offset )
   9841           && ( size == rhs.size );
   9842     }
   9843 
   9844     bool operator!=( MappedMemoryRange const& rhs ) const
   9845     {
   9846       return !operator==( rhs );
   9847     }
   9848 
   9849   private:
   9850     StructureType sType = StructureType::eMappedMemoryRange;
   9851 
   9852   public:
   9853     const void* pNext = nullptr;
   9854     DeviceMemory memory;
   9855     DeviceSize offset;
   9856     DeviceSize size;
   9857   };
   9858   static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
   9859 
   9860   struct WriteDescriptorSet
   9861   {
   9862     WriteDescriptorSet( DescriptorSet dstSet_ = DescriptorSet(),
   9863                         uint32_t dstBinding_ = 0,
   9864                         uint32_t dstArrayElement_ = 0,
   9865                         uint32_t descriptorCount_ = 0,
   9866                         DescriptorType descriptorType_ = DescriptorType::eSampler,
   9867                         const DescriptorImageInfo* pImageInfo_ = nullptr,
   9868                         const DescriptorBufferInfo* pBufferInfo_ = nullptr,
   9869                         const BufferView* pTexelBufferView_ = nullptr )
   9870       : dstSet( dstSet_ )
   9871       , dstBinding( dstBinding_ )
   9872       , dstArrayElement( dstArrayElement_ )
   9873       , descriptorCount( descriptorCount_ )
   9874       , descriptorType( descriptorType_ )
   9875       , pImageInfo( pImageInfo_ )
   9876       , pBufferInfo( pBufferInfo_ )
   9877       , pTexelBufferView( pTexelBufferView_ )
   9878     {
   9879     }
   9880 
   9881     WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
   9882     {
   9883       memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
   9884     }
   9885 
   9886     WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
   9887     {
   9888       memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
   9889       return *this;
   9890     }
   9891     WriteDescriptorSet& setPNext( const void* pNext_ )
   9892     {
   9893       pNext = pNext_;
   9894       return *this;
   9895     }
   9896 
   9897     WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
   9898     {
   9899       dstSet = dstSet_;
   9900       return *this;
   9901     }
   9902 
   9903     WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
   9904     {
   9905       dstBinding = dstBinding_;
   9906       return *this;
   9907     }
   9908 
   9909     WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
   9910     {
   9911       dstArrayElement = dstArrayElement_;
   9912       return *this;
   9913     }
   9914 
   9915     WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
   9916     {
   9917       descriptorCount = descriptorCount_;
   9918       return *this;
   9919     }
   9920 
   9921     WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
   9922     {
   9923       descriptorType = descriptorType_;
   9924       return *this;
   9925     }
   9926 
   9927     WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
   9928     {
   9929       pImageInfo = pImageInfo_;
   9930       return *this;
   9931     }
   9932 
   9933     WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
   9934     {
   9935       pBufferInfo = pBufferInfo_;
   9936       return *this;
   9937     }
   9938 
   9939     WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
   9940     {
   9941       pTexelBufferView = pTexelBufferView_;
   9942       return *this;
   9943     }
   9944 
   9945     operator VkWriteDescriptorSet const&() const
   9946     {
   9947       return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
   9948     }
   9949 
   9950     operator VkWriteDescriptorSet &()
   9951     {
   9952       return *reinterpret_cast<VkWriteDescriptorSet*>(this);
   9953     }
   9954 
   9955     bool operator==( WriteDescriptorSet const& rhs ) const
   9956     {
   9957       return ( sType == rhs.sType )
   9958           && ( pNext == rhs.pNext )
   9959           && ( dstSet == rhs.dstSet )
   9960           && ( dstBinding == rhs.dstBinding )
   9961           && ( dstArrayElement == rhs.dstArrayElement )
   9962           && ( descriptorCount == rhs.descriptorCount )
   9963           && ( descriptorType == rhs.descriptorType )
   9964           && ( pImageInfo == rhs.pImageInfo )
   9965           && ( pBufferInfo == rhs.pBufferInfo )
   9966           && ( pTexelBufferView == rhs.pTexelBufferView );
   9967     }
   9968 
   9969     bool operator!=( WriteDescriptorSet const& rhs ) const
   9970     {
   9971       return !operator==( rhs );
   9972     }
   9973 
   9974   private:
   9975     StructureType sType = StructureType::eWriteDescriptorSet;
   9976 
   9977   public:
   9978     const void* pNext = nullptr;
   9979     DescriptorSet dstSet;
   9980     uint32_t dstBinding;
   9981     uint32_t dstArrayElement;
   9982     uint32_t descriptorCount;
   9983     DescriptorType descriptorType;
   9984     const DescriptorImageInfo* pImageInfo;
   9985     const DescriptorBufferInfo* pBufferInfo;
   9986     const BufferView* pTexelBufferView;
   9987   };
   9988   static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
   9989 
   9990   struct CopyDescriptorSet
   9991   {
   9992     CopyDescriptorSet( DescriptorSet srcSet_ = DescriptorSet(),
   9993                        uint32_t srcBinding_ = 0,
   9994                        uint32_t srcArrayElement_ = 0,
   9995                        DescriptorSet dstSet_ = DescriptorSet(),
   9996                        uint32_t dstBinding_ = 0,
   9997                        uint32_t dstArrayElement_ = 0,
   9998                        uint32_t descriptorCount_ = 0 )
   9999       : srcSet( srcSet_ )
   10000       , srcBinding( srcBinding_ )
   10001       , srcArrayElement( srcArrayElement_ )
   10002       , dstSet( dstSet_ )
   10003       , dstBinding( dstBinding_ )
   10004       , dstArrayElement( dstArrayElement_ )
   10005       , descriptorCount( descriptorCount_ )
   10006     {
   10007     }
   10008 
   10009     CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
   10010     {
   10011       memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
   10012     }
   10013 
   10014     CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
   10015     {
   10016       memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
   10017       return *this;
   10018     }
   10019     CopyDescriptorSet& setPNext( const void* pNext_ )
   10020     {
   10021       pNext = pNext_;
   10022       return *this;
   10023     }
   10024 
   10025     CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
   10026     {
   10027       srcSet = srcSet_;
   10028       return *this;
   10029     }
   10030 
   10031     CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
   10032     {
   10033       srcBinding = srcBinding_;
   10034       return *this;
   10035     }
   10036 
   10037     CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
   10038     {
   10039       srcArrayElement = srcArrayElement_;
   10040       return *this;
   10041     }
   10042 
   10043     CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
   10044     {
   10045       dstSet = dstSet_;
   10046       return *this;
   10047     }
   10048 
   10049     CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
   10050     {
   10051       dstBinding = dstBinding_;
   10052       return *this;
   10053     }
   10054 
   10055     CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
   10056     {
   10057       dstArrayElement = dstArrayElement_;
   10058       return *this;
   10059     }
   10060 
   10061     CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
   10062     {
   10063       descriptorCount = descriptorCount_;
   10064       return *this;
   10065     }
   10066 
   10067     operator VkCopyDescriptorSet const&() const
   10068     {
   10069       return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
   10070     }
   10071 
   10072     operator VkCopyDescriptorSet &()
   10073     {
   10074       return *reinterpret_cast<VkCopyDescriptorSet*>(this);
   10075     }
   10076 
   10077     bool operator==( CopyDescriptorSet const& rhs ) const
   10078     {
   10079       return ( sType == rhs.sType )
   10080           && ( pNext == rhs.pNext )
   10081           && ( srcSet == rhs.srcSet )
   10082           && ( srcBinding == rhs.srcBinding )
   10083           && ( srcArrayElement == rhs.srcArrayElement )
   10084           && ( dstSet == rhs.dstSet )
   10085           && ( dstBinding == rhs.dstBinding )
   10086           && ( dstArrayElement == rhs.dstArrayElement )
   10087           && ( descriptorCount == rhs.descriptorCount );
   10088     }
   10089 
   10090     bool operator!=( CopyDescriptorSet const& rhs ) const
   10091     {
   10092       return !operator==( rhs );
   10093     }
   10094 
   10095   private:
   10096     StructureType sType = StructureType::eCopyDescriptorSet;
   10097 
   10098   public:
   10099     const void* pNext = nullptr;
   10100     DescriptorSet srcSet;
   10101     uint32_t srcBinding;
   10102     uint32_t srcArrayElement;
   10103     DescriptorSet dstSet;
   10104     uint32_t dstBinding;
   10105     uint32_t dstArrayElement;
   10106     uint32_t descriptorCount;
   10107   };
   10108   static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
   10109 
   10110   struct BufferViewCreateInfo
   10111   {
   10112     BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(),
   10113                           Buffer buffer_ = Buffer(),
   10114                           Format format_ = Format::eUndefined,
   10115                           DeviceSize offset_ = 0,
   10116                           DeviceSize range_ = 0 )
   10117       : flags( flags_ )
   10118       , buffer( buffer_ )
   10119       , format( format_ )
   10120       , offset( offset_ )
   10121       , range( range_ )
   10122     {
   10123     }
   10124 
   10125     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
   10126     {
   10127       memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
   10128     }
   10129 
   10130     BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
   10131     {
   10132       memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
   10133       return *this;
   10134     }
   10135     BufferViewCreateInfo& setPNext( const void* pNext_ )
   10136     {
   10137       pNext = pNext_;
   10138       return *this;
   10139     }
   10140 
   10141     BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
   10142     {
   10143       flags = flags_;
   10144       return *this;
   10145     }
   10146 
   10147     BufferViewCreateInfo& setBuffer( Buffer buffer_ )
   10148     {
   10149       buffer = buffer_;
   10150       return *this;
   10151     }
   10152 
   10153     BufferViewCreateInfo& setFormat( Format format_ )
   10154     {
   10155       format = format_;
   10156       return *this;
   10157     }
   10158 
   10159     BufferViewCreateInfo& setOffset( DeviceSize offset_ )
   10160     {
   10161       offset = offset_;
   10162       return *this;
   10163     }
   10164 
   10165     BufferViewCreateInfo& setRange( DeviceSize range_ )
   10166     {
   10167       range = range_;
   10168       return *this;
   10169     }
   10170 
   10171     operator VkBufferViewCreateInfo const&() const
   10172     {
   10173       return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
   10174     }
   10175 
   10176     operator VkBufferViewCreateInfo &()
   10177     {
   10178       return *reinterpret_cast<VkBufferViewCreateInfo*>(this);
   10179     }
   10180 
   10181     bool operator==( BufferViewCreateInfo const& rhs ) const
   10182     {
   10183       return ( sType == rhs.sType )
   10184           && ( pNext == rhs.pNext )
   10185           && ( flags == rhs.flags )
   10186           && ( buffer == rhs.buffer )
   10187           && ( format == rhs.format )
   10188           && ( offset == rhs.offset )
   10189           && ( range == rhs.range );
   10190     }
   10191 
   10192     bool operator!=( BufferViewCreateInfo const& rhs ) const
   10193     {
   10194       return !operator==( rhs );
   10195     }
   10196 
   10197   private:
   10198     StructureType sType = StructureType::eBufferViewCreateInfo;
   10199 
   10200   public:
   10201     const void* pNext = nullptr;
   10202     BufferViewCreateFlags flags;
   10203     Buffer buffer;
   10204     Format format;
   10205     DeviceSize offset;
   10206     DeviceSize range;
   10207   };
   10208   static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
   10209 
   10210   struct ShaderModuleCreateInfo
   10211   {
   10212     ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(),
   10213                             size_t codeSize_ = 0,
   10214                             const uint32_t* pCode_ = nullptr )
   10215       : flags( flags_ )
   10216       , codeSize( codeSize_ )
   10217       , pCode( pCode_ )
   10218     {
   10219     }
   10220 
   10221     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
   10222     {
   10223       memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
   10224     }
   10225 
   10226     ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
   10227     {
   10228       memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
   10229       return *this;
   10230     }
   10231     ShaderModuleCreateInfo& setPNext( const void* pNext_ )
   10232     {
   10233       pNext = pNext_;
   10234       return *this;
   10235     }
   10236 
   10237     ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
   10238     {
   10239       flags = flags_;
   10240       return *this;
   10241     }
   10242 
   10243     ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
   10244     {
   10245       codeSize = codeSize_;
   10246       return *this;
   10247     }
   10248 
   10249     ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
   10250     {
   10251       pCode = pCode_;
   10252       return *this;
   10253     }
   10254 
   10255     operator VkShaderModuleCreateInfo const&() const
   10256     {
   10257       return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
   10258     }
   10259 
   10260     operator VkShaderModuleCreateInfo &()
   10261     {
   10262       return *reinterpret_cast<VkShaderModuleCreateInfo*>(this);
   10263     }
   10264 
   10265     bool operator==( ShaderModuleCreateInfo const& rhs ) const
   10266     {
   10267       return ( sType == rhs.sType )
   10268           && ( pNext == rhs.pNext )
   10269           && ( flags == rhs.flags )
   10270           && ( codeSize == rhs.codeSize )
   10271           && ( pCode == rhs.pCode );
   10272     }
   10273 
   10274     bool operator!=( ShaderModuleCreateInfo const& rhs ) const
   10275     {
   10276       return !operator==( rhs );
   10277     }
   10278 
   10279   private:
   10280     StructureType sType = StructureType::eShaderModuleCreateInfo;
   10281 
   10282   public:
   10283     const void* pNext = nullptr;
   10284     ShaderModuleCreateFlags flags;
   10285     size_t codeSize;
   10286     const uint32_t* pCode;
   10287   };
   10288   static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
   10289 
   10290   struct DescriptorSetAllocateInfo
   10291   {
   10292     DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(),
   10293                                uint32_t descriptorSetCount_ = 0,
   10294                                const DescriptorSetLayout* pSetLayouts_ = nullptr )
   10295       : descriptorPool( descriptorPool_ )
   10296       , descriptorSetCount( descriptorSetCount_ )
   10297       , pSetLayouts( pSetLayouts_ )
   10298     {
   10299     }
   10300 
   10301     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
   10302     {
   10303       memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
   10304     }
   10305 
   10306     DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
   10307     {
   10308       memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
   10309       return *this;
   10310     }
   10311     DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
   10312     {
   10313       pNext = pNext_;
   10314       return *this;
   10315     }
   10316 
   10317     DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
   10318     {
   10319       descriptorPool = descriptorPool_;
   10320       return *this;
   10321     }
   10322 
   10323     DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
   10324     {
   10325       descriptorSetCount = descriptorSetCount_;
   10326       return *this;
   10327     }
   10328 
   10329     DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
   10330     {
   10331       pSetLayouts = pSetLayouts_;
   10332       return *this;
   10333     }
   10334 
   10335     operator VkDescriptorSetAllocateInfo const&() const
   10336     {
   10337       return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
   10338     }
   10339 
   10340     operator VkDescriptorSetAllocateInfo &()
   10341     {
   10342       return *reinterpret_cast<VkDescriptorSetAllocateInfo*>(this);
   10343     }
   10344 
   10345     bool operator==( DescriptorSetAllocateInfo const& rhs ) const
   10346     {
   10347       return ( sType == rhs.sType )
   10348           && ( pNext == rhs.pNext )
   10349           && ( descriptorPool == rhs.descriptorPool )
   10350           && ( descriptorSetCount == rhs.descriptorSetCount )
   10351           && ( pSetLayouts == rhs.pSetLayouts );
   10352     }
   10353 
   10354     bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
   10355     {
   10356       return !operator==( rhs );
   10357     }
   10358 
   10359   private:
   10360     StructureType sType = StructureType::eDescriptorSetAllocateInfo;
   10361 
   10362   public:
   10363     const void* pNext = nullptr;
   10364     DescriptorPool descriptorPool;
   10365     uint32_t descriptorSetCount;
   10366     const DescriptorSetLayout* pSetLayouts;
   10367   };
   10368   static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
   10369 
   10370   struct PipelineVertexInputStateCreateInfo
   10371   {
   10372     PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(),
   10373                                         uint32_t vertexBindingDescriptionCount_ = 0,
   10374                                         const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr,
   10375                                         uint32_t vertexAttributeDescriptionCount_ = 0,
   10376                                         const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
   10377       : flags( flags_ )
   10378       , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
   10379       , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
   10380       , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
   10381       , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
   10382     {
   10383     }
   10384 
   10385     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
   10386     {
   10387       memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
   10388     }
   10389 
   10390     PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
   10391     {
   10392       memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
   10393       return *this;
   10394     }
   10395     PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
   10396     {
   10397       pNext = pNext_;
   10398       return *this;
   10399     }
   10400 
   10401     PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
   10402     {
   10403       flags = flags_;
   10404       return *this;
   10405     }
   10406 
   10407     PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
   10408     {
   10409       vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
   10410       return *this;
   10411     }
   10412 
   10413     PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
   10414     {
   10415       pVertexBindingDescriptions = pVertexBindingDescriptions_;
   10416       return *this;
   10417     }
   10418 
   10419     PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
   10420     {
   10421       vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
   10422       return *this;
   10423     }
   10424 
   10425     PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
   10426     {
   10427       pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
   10428       return *this;
   10429     }
   10430 
   10431     operator VkPipelineVertexInputStateCreateInfo const&() const
   10432     {
   10433       return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
   10434     }
   10435 
   10436     operator VkPipelineVertexInputStateCreateInfo &()
   10437     {
   10438       return *reinterpret_cast<VkPipelineVertexInputStateCreateInfo*>(this);
   10439     }
   10440 
   10441     bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
   10442     {
   10443       return ( sType == rhs.sType )
   10444           && ( pNext == rhs.pNext )
   10445           && ( flags == rhs.flags )
   10446           && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
   10447           && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
   10448           && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
   10449           && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
   10450     }
   10451 
   10452     bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
   10453     {
   10454       return !operator==( rhs );
   10455     }
   10456 
   10457   private:
   10458     StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
   10459 
   10460   public:
   10461     const void* pNext = nullptr;
   10462     PipelineVertexInputStateCreateFlags flags;
   10463     uint32_t vertexBindingDescriptionCount;
   10464     const VertexInputBindingDescription* pVertexBindingDescriptions;
   10465     uint32_t vertexAttributeDescriptionCount;
   10466     const VertexInputAttributeDescription* pVertexAttributeDescriptions;
   10467   };
   10468   static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
   10469 
   10470   struct PipelineInputAssemblyStateCreateInfo
   10471   {
   10472     PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(),
   10473                                           PrimitiveTopology topology_ = PrimitiveTopology::ePointList,
   10474                                           Bool32 primitiveRestartEnable_ = 0 )
   10475       : flags( flags_ )
   10476       , topology( topology_ )
   10477       , primitiveRestartEnable( primitiveRestartEnable_ )
   10478     {
   10479     }
   10480 
   10481     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
   10482     {
   10483       memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
   10484     }
   10485 
   10486     PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
   10487     {
   10488       memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
   10489       return *this;
   10490     }
   10491     PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
   10492     {
   10493       pNext = pNext_;
   10494       return *this;
   10495     }
   10496 
   10497     PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
   10498     {
   10499       flags = flags_;
   10500       return *this;
   10501     }
   10502 
   10503     PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
   10504     {
   10505       topology = topology_;
   10506       return *this;
   10507     }
   10508 
   10509     PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
   10510     {
   10511       primitiveRestartEnable = primitiveRestartEnable_;
   10512       return *this;
   10513     }
   10514 
   10515     operator VkPipelineInputAssemblyStateCreateInfo const&() const
   10516     {
   10517       return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
   10518     }
   10519 
   10520     operator VkPipelineInputAssemblyStateCreateInfo &()
   10521     {
   10522       return *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo*>(this);
   10523     }
   10524 
   10525     bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
   10526     {
   10527       return ( sType == rhs.sType )
   10528           && ( pNext == rhs.pNext )
   10529           && ( flags == rhs.flags )
   10530           && ( topology == rhs.topology )
   10531           && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
   10532     }
   10533 
   10534     bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
   10535     {
   10536       return !operator==( rhs );
   10537     }
   10538 
   10539   private:
   10540     StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
   10541 
   10542   public:
   10543     const void* pNext = nullptr;
   10544     PipelineInputAssemblyStateCreateFlags flags;
   10545     PrimitiveTopology topology;
   10546     Bool32 primitiveRestartEnable;
   10547   };
   10548   static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
   10549 
   10550   struct PipelineTessellationStateCreateInfo
   10551   {
   10552     PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(),
   10553                                          uint32_t patchControlPoints_ = 0 )
   10554       : flags( flags_ )
   10555       , patchControlPoints( patchControlPoints_ )
   10556     {
   10557     }
   10558 
   10559     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
   10560     {
   10561       memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
   10562     }
   10563 
   10564     PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
   10565     {
   10566       memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
   10567       return *this;
   10568     }
   10569     PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
   10570     {
   10571       pNext = pNext_;
   10572       return *this;
   10573     }
   10574 
   10575     PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
   10576     {
   10577       flags = flags_;
   10578       return *this;
   10579     }
   10580 
   10581     PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
   10582     {
   10583       patchControlPoints = patchControlPoints_;
   10584       return *this;
   10585     }
   10586 
   10587     operator VkPipelineTessellationStateCreateInfo const&() const
   10588     {
   10589       return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
   10590     }
   10591 
   10592     operator VkPipelineTessellationStateCreateInfo &()
   10593     {
   10594       return *reinterpret_cast<VkPipelineTessellationStateCreateInfo*>(this);
   10595     }
   10596 
   10597     bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
   10598     {
   10599       return ( sType == rhs.sType )
   10600           && ( pNext == rhs.pNext )
   10601           && ( flags == rhs.flags )
   10602           && ( patchControlPoints == rhs.patchControlPoints );
   10603     }
   10604 
   10605     bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
   10606     {
   10607       return !operator==( rhs );
   10608     }
   10609 
   10610   private:
   10611     StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
   10612 
   10613   public:
   10614     const void* pNext = nullptr;
   10615     PipelineTessellationStateCreateFlags flags;
   10616     uint32_t patchControlPoints;
   10617   };
   10618   static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
   10619 
   10620   struct PipelineViewportStateCreateInfo
   10621   {
   10622     PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(),
   10623                                      uint32_t viewportCount_ = 0,
   10624                                      const Viewport* pViewports_ = nullptr,
   10625                                      uint32_t scissorCount_ = 0,
   10626                                      const Rect2D* pScissors_ = nullptr )
   10627       : flags( flags_ )
   10628       , viewportCount( viewportCount_ )
   10629       , pViewports( pViewports_ )
   10630       , scissorCount( scissorCount_ )
   10631       , pScissors( pScissors_ )
   10632     {
   10633     }
   10634 
   10635     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
   10636     {
   10637       memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
   10638     }
   10639 
   10640     PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
   10641     {
   10642       memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
   10643       return *this;
   10644     }
   10645     PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
   10646     {
   10647       pNext = pNext_;
   10648       return *this;
   10649     }
   10650 
   10651     PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
   10652     {
   10653       flags = flags_;
   10654       return *this;
   10655     }
   10656 
   10657     PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
   10658     {
   10659       viewportCount = viewportCount_;
   10660       return *this;
   10661     }
   10662 
   10663     PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
   10664     {
   10665       pViewports = pViewports_;
   10666       return *this;
   10667     }
   10668 
   10669     PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
   10670     {
   10671       scissorCount = scissorCount_;
   10672       return *this;
   10673     }
   10674 
   10675     PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
   10676     {
   10677       pScissors = pScissors_;
   10678       return *this;
   10679     }
   10680 
   10681     operator VkPipelineViewportStateCreateInfo const&() const
   10682     {
   10683       return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
   10684     }
   10685 
   10686     operator VkPipelineViewportStateCreateInfo &()
   10687     {
   10688       return *reinterpret_cast<VkPipelineViewportStateCreateInfo*>(this);
   10689     }
   10690 
   10691     bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
   10692     {
   10693       return ( sType == rhs.sType )
   10694           && ( pNext == rhs.pNext )
   10695           && ( flags == rhs.flags )
   10696           && ( viewportCount == rhs.viewportCount )
   10697           && ( pViewports == rhs.pViewports )
   10698           && ( scissorCount == rhs.scissorCount )
   10699           && ( pScissors == rhs.pScissors );
   10700     }
   10701 
   10702     bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
   10703     {
   10704       return !operator==( rhs );
   10705     }
   10706 
   10707   private:
   10708     StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
   10709 
   10710   public:
   10711     const void* pNext = nullptr;
   10712     PipelineViewportStateCreateFlags flags;
   10713     uint32_t viewportCount;
   10714     const Viewport* pViewports;
   10715     uint32_t scissorCount;
   10716     const Rect2D* pScissors;
   10717   };
   10718   static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
   10719 
   10720   struct PipelineRasterizationStateCreateInfo
   10721   {
   10722     PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateFlags flags_ = PipelineRasterizationStateCreateFlags(),
   10723                                           Bool32 depthClampEnable_ = 0,
   10724                                           Bool32 rasterizerDiscardEnable_ = 0,
   10725                                           PolygonMode polygonMode_ = PolygonMode::eFill,
   10726                                           CullModeFlags cullMode_ = CullModeFlags(),
   10727                                           FrontFace frontFace_ = FrontFace::eCounterClockwise,
   10728                                           Bool32 depthBiasEnable_ = 0,
   10729                                           float depthBiasConstantFactor_ = 0,
   10730                                           float depthBiasClamp_ = 0,
   10731                                           float depthBiasSlopeFactor_ = 0,
   10732                                           float lineWidth_ = 0 )
   10733       : flags( flags_ )
   10734       , depthClampEnable( depthClampEnable_ )
   10735       , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
   10736       , polygonMode( polygonMode_ )
   10737       , cullMode( cullMode_ )
   10738       , frontFace( frontFace_ )
   10739       , depthBiasEnable( depthBiasEnable_ )
   10740       , depthBiasConstantFactor( depthBiasConstantFactor_ )
   10741       , depthBiasClamp( depthBiasClamp_ )
   10742       , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
   10743       , lineWidth( lineWidth_ )
   10744     {
   10745     }
   10746 
   10747     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
   10748     {
   10749       memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
   10750     }
   10751 
   10752     PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
   10753     {
   10754       memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
   10755       return *this;
   10756     }
   10757     PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
   10758     {
   10759       pNext = pNext_;
   10760       return *this;
   10761     }
   10762 
   10763     PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
   10764     {
   10765       flags = flags_;
   10766       return *this;
   10767     }
   10768 
   10769     PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
   10770     {
   10771       depthClampEnable = depthClampEnable_;
   10772       return *this;
   10773     }
   10774 
   10775     PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
   10776     {
   10777       rasterizerDiscardEnable = rasterizerDiscardEnable_;
   10778       return *this;
   10779     }
   10780 
   10781     PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
   10782     {
   10783       polygonMode = polygonMode_;
   10784       return *this;
   10785     }
   10786 
   10787     PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
   10788     {
   10789       cullMode = cullMode_;
   10790       return *this;
   10791     }
   10792 
   10793     PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
   10794     {
   10795       frontFace = frontFace_;
   10796       return *this;
   10797     }
   10798 
   10799     PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
   10800     {
   10801       depthBiasEnable = depthBiasEnable_;
   10802       return *this;
   10803     }
   10804 
   10805     PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
   10806     {
   10807       depthBiasConstantFactor = depthBiasConstantFactor_;
   10808       return *this;
   10809     }
   10810 
   10811     PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
   10812     {
   10813       depthBiasClamp = depthBiasClamp_;
   10814       return *this;
   10815     }
   10816 
   10817     PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
   10818     {
   10819       depthBiasSlopeFactor = depthBiasSlopeFactor_;
   10820       return *this;
   10821     }
   10822 
   10823     PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
   10824     {
   10825       lineWidth = lineWidth_;
   10826       return *this;
   10827     }
   10828 
   10829     operator VkPipelineRasterizationStateCreateInfo const&() const
   10830     {
   10831       return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
   10832     }
   10833 
   10834     operator VkPipelineRasterizationStateCreateInfo &()
   10835     {
   10836       return *reinterpret_cast<VkPipelineRasterizationStateCreateInfo*>(this);
   10837     }
   10838 
   10839     bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
   10840     {
   10841       return ( sType == rhs.sType )
   10842           && ( pNext == rhs.pNext )
   10843           && ( flags == rhs.flags )
   10844           && ( depthClampEnable == rhs.depthClampEnable )
   10845           && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
   10846           && ( polygonMode == rhs.polygonMode )
   10847           && ( cullMode == rhs.cullMode )
   10848           && ( frontFace == rhs.frontFace )
   10849           && ( depthBiasEnable == rhs.depthBiasEnable )
   10850           && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
   10851           && ( depthBiasClamp == rhs.depthBiasClamp )
   10852           && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
   10853           && ( lineWidth == rhs.lineWidth );
   10854     }
   10855 
   10856     bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
   10857     {
   10858       return !operator==( rhs );
   10859     }
   10860 
   10861   private:
   10862     StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
   10863 
   10864   public:
   10865     const void* pNext = nullptr;
   10866     PipelineRasterizationStateCreateFlags flags;
   10867     Bool32 depthClampEnable;
   10868     Bool32 rasterizerDiscardEnable;
   10869     PolygonMode polygonMode;
   10870     CullModeFlags cullMode;
   10871     FrontFace frontFace;
   10872     Bool32 depthBiasEnable;
   10873     float depthBiasConstantFactor;
   10874     float depthBiasClamp;
   10875     float depthBiasSlopeFactor;
   10876     float lineWidth;
   10877   };
   10878   static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
   10879 
   10880   struct PipelineDepthStencilStateCreateInfo
   10881   {
   10882     PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateFlags flags_ = PipelineDepthStencilStateCreateFlags(),
   10883                                          Bool32 depthTestEnable_ = 0,
   10884                                          Bool32 depthWriteEnable_ = 0,
   10885                                          CompareOp depthCompareOp_ = CompareOp::eNever,
   10886                                          Bool32 depthBoundsTestEnable_ = 0,
   10887                                          Bool32 stencilTestEnable_ = 0,
   10888                                          StencilOpState front_ = StencilOpState(),
   10889                                          StencilOpState back_ = StencilOpState(),
   10890                                          float minDepthBounds_ = 0,
   10891                                          float maxDepthBounds_ = 0 )
   10892       : flags( flags_ )
   10893       , depthTestEnable( depthTestEnable_ )
   10894       , depthWriteEnable( depthWriteEnable_ )
   10895       , depthCompareOp( depthCompareOp_ )
   10896       , depthBoundsTestEnable( depthBoundsTestEnable_ )
   10897       , stencilTestEnable( stencilTestEnable_ )
   10898       , front( front_ )
   10899       , back( back_ )
   10900       , minDepthBounds( minDepthBounds_ )
   10901       , maxDepthBounds( maxDepthBounds_ )
   10902     {
   10903     }
   10904 
   10905     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
   10906     {
   10907       memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
   10908     }
   10909 
   10910     PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
   10911     {
   10912       memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
   10913       return *this;
   10914     }
   10915     PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
   10916     {
   10917       pNext = pNext_;
   10918       return *this;
   10919     }
   10920 
   10921     PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
   10922     {
   10923       flags = flags_;
   10924       return *this;
   10925     }
   10926 
   10927     PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
   10928     {
   10929       depthTestEnable = depthTestEnable_;
   10930       return *this;
   10931     }
   10932 
   10933     PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
   10934     {
   10935       depthWriteEnable = depthWriteEnable_;
   10936       return *this;
   10937     }
   10938 
   10939     PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
   10940     {
   10941       depthCompareOp = depthCompareOp_;
   10942       return *this;
   10943     }
   10944 
   10945     PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
   10946     {
   10947       depthBoundsTestEnable = depthBoundsTestEnable_;
   10948       return *this;
   10949     }
   10950 
   10951     PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
   10952     {
   10953       stencilTestEnable = stencilTestEnable_;
   10954       return *this;
   10955     }
   10956 
   10957     PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
   10958     {
   10959       front = front_;
   10960       return *this;
   10961     }
   10962 
   10963     PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
   10964     {
   10965       back = back_;
   10966       return *this;
   10967     }
   10968 
   10969     PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
   10970     {
   10971       minDepthBounds = minDepthBounds_;
   10972       return *this;
   10973     }
   10974 
   10975     PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
   10976     {
   10977       maxDepthBounds = maxDepthBounds_;
   10978       return *this;
   10979     }
   10980 
   10981     operator VkPipelineDepthStencilStateCreateInfo const&() const
   10982     {
   10983       return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
   10984     }
   10985 
   10986     operator VkPipelineDepthStencilStateCreateInfo &()
   10987     {
   10988       return *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo*>(this);
   10989     }
   10990 
   10991     bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
   10992     {
   10993       return ( sType == rhs.sType )
   10994           && ( pNext == rhs.pNext )
   10995           && ( flags == rhs.flags )
   10996           && ( depthTestEnable == rhs.depthTestEnable )
   10997           && ( depthWriteEnable == rhs.depthWriteEnable )
   10998           && ( depthCompareOp == rhs.depthCompareOp )
   10999           && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
   11000           && ( stencilTestEnable == rhs.stencilTestEnable )
   11001           && ( front == rhs.front )
   11002           && ( back == rhs.back )
   11003           && ( minDepthBounds == rhs.minDepthBounds )
   11004           && ( maxDepthBounds == rhs.maxDepthBounds );
   11005     }
   11006 
   11007     bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
   11008     {
   11009       return !operator==( rhs );
   11010     }
   11011 
   11012   private:
   11013     StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
   11014 
   11015   public:
   11016     const void* pNext = nullptr;
   11017     PipelineDepthStencilStateCreateFlags flags;
   11018     Bool32 depthTestEnable;
   11019     Bool32 depthWriteEnable;
   11020     CompareOp depthCompareOp;
   11021     Bool32 depthBoundsTestEnable;
   11022     Bool32 stencilTestEnable;
   11023     StencilOpState front;
   11024     StencilOpState back;
   11025     float minDepthBounds;
   11026     float maxDepthBounds;
   11027   };
   11028   static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
   11029 
   11030   struct PipelineCacheCreateInfo
   11031   {
   11032     PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(),
   11033                              size_t initialDataSize_ = 0,
   11034                              const void* pInitialData_ = nullptr )
   11035       : flags( flags_ )
   11036       , initialDataSize( initialDataSize_ )
   11037       , pInitialData( pInitialData_ )
   11038     {
   11039     }
   11040 
   11041     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
   11042     {
   11043       memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
   11044     }
   11045 
   11046     PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
   11047     {
   11048       memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
   11049       return *this;
   11050     }
   11051     PipelineCacheCreateInfo& setPNext( const void* pNext_ )
   11052     {
   11053       pNext = pNext_;
   11054       return *this;
   11055     }
   11056 
   11057     PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
   11058     {
   11059       flags = flags_;
   11060       return *this;
   11061     }
   11062 
   11063     PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
   11064     {
   11065       initialDataSize = initialDataSize_;
   11066       return *this;
   11067     }
   11068 
   11069     PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
   11070     {
   11071       pInitialData = pInitialData_;
   11072       return *this;
   11073     }
   11074 
   11075     operator VkPipelineCacheCreateInfo const&() const
   11076     {
   11077       return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
   11078     }
   11079 
   11080     operator VkPipelineCacheCreateInfo &()
   11081     {
   11082       return *reinterpret_cast<VkPipelineCacheCreateInfo*>(this);
   11083     }
   11084 
   11085     bool operator==( PipelineCacheCreateInfo const& rhs ) const
   11086     {
   11087       return ( sType == rhs.sType )
   11088           && ( pNext == rhs.pNext )
   11089           && ( flags == rhs.flags )
   11090           && ( initialDataSize == rhs.initialDataSize )
   11091           && ( pInitialData == rhs.pInitialData );
   11092     }
   11093 
   11094     bool operator!=( PipelineCacheCreateInfo const& rhs ) const
   11095     {
   11096       return !operator==( rhs );
   11097     }
   11098 
   11099   private:
   11100     StructureType sType = StructureType::ePipelineCacheCreateInfo;
   11101 
   11102   public:
   11103     const void* pNext = nullptr;
   11104     PipelineCacheCreateFlags flags;
   11105     size_t initialDataSize;
   11106     const void* pInitialData;
   11107   };
   11108   static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
   11109 
   11110   struct SamplerCreateInfo
   11111   {
   11112     SamplerCreateInfo( SamplerCreateFlags flags_ = SamplerCreateFlags(),
   11113                        Filter magFilter_ = Filter::eNearest,
   11114                        Filter minFilter_ = Filter::eNearest,
   11115                        SamplerMipmapMode mipmapMode_ = SamplerMipmapMode::eNearest,
   11116                        SamplerAddressMode addressModeU_ = SamplerAddressMode::eRepeat,
   11117                        SamplerAddressMode addressModeV_ = SamplerAddressMode::eRepeat,
   11118                        SamplerAddressMode addressModeW_ = SamplerAddressMode::eRepeat,
   11119                        float mipLodBias_ = 0,
   11120                        Bool32 anisotropyEnable_ = 0,
   11121                        float maxAnisotropy_ = 0,
   11122                        Bool32 compareEnable_ = 0,
   11123                        CompareOp compareOp_ = CompareOp::eNever,
   11124                        float minLod_ = 0,
   11125                        float maxLod_ = 0,
   11126                        BorderColor borderColor_ = BorderColor::eFloatTransparentBlack,
   11127                        Bool32 unnormalizedCoordinates_ = 0 )
   11128       : flags( flags_ )
   11129       , magFilter( magFilter_ )
   11130       , minFilter( minFilter_ )
   11131       , mipmapMode( mipmapMode_ )
   11132       , addressModeU( addressModeU_ )
   11133       , addressModeV( addressModeV_ )
   11134       , addressModeW( addressModeW_ )
   11135       , mipLodBias( mipLodBias_ )
   11136       , anisotropyEnable( anisotropyEnable_ )
   11137       , maxAnisotropy( maxAnisotropy_ )
   11138       , compareEnable( compareEnable_ )
   11139       , compareOp( compareOp_ )
   11140       , minLod( minLod_ )
   11141       , maxLod( maxLod_ )
   11142       , borderColor( borderColor_ )
   11143       , unnormalizedCoordinates( unnormalizedCoordinates_ )
   11144     {
   11145     }
   11146 
   11147     SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
   11148     {
   11149       memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
   11150     }
   11151 
   11152     SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
   11153     {
   11154       memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
   11155       return *this;
   11156     }
   11157     SamplerCreateInfo& setPNext( const void* pNext_ )
   11158     {
   11159       pNext = pNext_;
   11160       return *this;
   11161     }
   11162 
   11163     SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
   11164     {
   11165       flags = flags_;
   11166       return *this;
   11167     }
   11168 
   11169     SamplerCreateInfo& setMagFilter( Filter magFilter_ )
   11170     {
   11171       magFilter = magFilter_;
   11172       return *this;
   11173     }
   11174 
   11175     SamplerCreateInfo& setMinFilter( Filter minFilter_ )
   11176     {
   11177       minFilter = minFilter_;
   11178       return *this;
   11179     }
   11180 
   11181     SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
   11182     {
   11183       mipmapMode = mipmapMode_;
   11184       return *this;
   11185     }
   11186 
   11187     SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
   11188     {
   11189       addressModeU = addressModeU_;
   11190       return *this;
   11191     }
   11192 
   11193     SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
   11194     {
   11195       addressModeV = addressModeV_;
   11196       return *this;
   11197     }
   11198 
   11199     SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
   11200     {
   11201       addressModeW = addressModeW_;
   11202       return *this;
   11203     }
   11204 
   11205     SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
   11206     {
   11207       mipLodBias = mipLodBias_;
   11208       return *this;
   11209     }
   11210 
   11211     SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
   11212     {
   11213       anisotropyEnable = anisotropyEnable_;
   11214       return *this;
   11215     }
   11216 
   11217     SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
   11218     {
   11219       maxAnisotropy = maxAnisotropy_;
   11220       return *this;
   11221     }
   11222 
   11223     SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
   11224     {
   11225       compareEnable = compareEnable_;
   11226       return *this;
   11227     }
   11228 
   11229     SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
   11230     {
   11231       compareOp = compareOp_;
   11232       return *this;
   11233     }
   11234 
   11235     SamplerCreateInfo& setMinLod( float minLod_ )
   11236     {
   11237       minLod = minLod_;
   11238       return *this;
   11239     }
   11240 
   11241     SamplerCreateInfo& setMaxLod( float maxLod_ )
   11242     {
   11243       maxLod = maxLod_;
   11244       return *this;
   11245     }
   11246 
   11247     SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
   11248     {
   11249       borderColor = borderColor_;
   11250       return *this;
   11251     }
   11252 
   11253     SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
   11254     {
   11255       unnormalizedCoordinates = unnormalizedCoordinates_;
   11256       return *this;
   11257     }
   11258 
   11259     operator VkSamplerCreateInfo const&() const
   11260     {
   11261       return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
   11262     }
   11263 
   11264     operator VkSamplerCreateInfo &()
   11265     {
   11266       return *reinterpret_cast<VkSamplerCreateInfo*>(this);
   11267     }
   11268 
   11269     bool operator==( SamplerCreateInfo const& rhs ) const
   11270     {
   11271       return ( sType == rhs.sType )
   11272           && ( pNext == rhs.pNext )
   11273           && ( flags == rhs.flags )
   11274           && ( magFilter == rhs.magFilter )
   11275           && ( minFilter == rhs.minFilter )
   11276           && ( mipmapMode == rhs.mipmapMode )
   11277           && ( addressModeU == rhs.addressModeU )
   11278           && ( addressModeV == rhs.addressModeV )
   11279           && ( addressModeW == rhs.addressModeW )
   11280           && ( mipLodBias == rhs.mipLodBias )
   11281           && ( anisotropyEnable == rhs.anisotropyEnable )
   11282           && ( maxAnisotropy == rhs.maxAnisotropy )
   11283           && ( compareEnable == rhs.compareEnable )
   11284           && ( compareOp == rhs.compareOp )
   11285           && ( minLod == rhs.minLod )
   11286           && ( maxLod == rhs.maxLod )
   11287           && ( borderColor == rhs.borderColor )
   11288           && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
   11289     }
   11290 
   11291     bool operator!=( SamplerCreateInfo const& rhs ) const
   11292     {
   11293       return !operator==( rhs );
   11294     }
   11295 
   11296   private:
   11297     StructureType sType = StructureType::eSamplerCreateInfo;
   11298 
   11299   public:
   11300     const void* pNext = nullptr;
   11301     SamplerCreateFlags flags;
   11302     Filter magFilter;
   11303     Filter minFilter;
   11304     SamplerMipmapMode mipmapMode;
   11305     SamplerAddressMode addressModeU;
   11306     SamplerAddressMode addressModeV;
   11307     SamplerAddressMode addressModeW;
   11308     float mipLodBias;
   11309     Bool32 anisotropyEnable;
   11310     float maxAnisotropy;
   11311     Bool32 compareEnable;
   11312     CompareOp compareOp;
   11313     float minLod;
   11314     float maxLod;
   11315     BorderColor borderColor;
   11316     Bool32 unnormalizedCoordinates;
   11317   };
   11318   static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
   11319 
   11320   struct CommandBufferAllocateInfo
   11321   {
   11322     CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(),
   11323                                CommandBufferLevel level_ = CommandBufferLevel::ePrimary,
   11324                                uint32_t commandBufferCount_ = 0 )
   11325       : commandPool( commandPool_ )
   11326       , level( level_ )
   11327       , commandBufferCount( commandBufferCount_ )
   11328     {
   11329     }
   11330 
   11331     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
   11332     {
   11333       memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
   11334     }
   11335 
   11336     CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
   11337     {
   11338       memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
   11339       return *this;
   11340     }
   11341     CommandBufferAllocateInfo& setPNext( const void* pNext_ )
   11342     {
   11343       pNext = pNext_;
   11344       return *this;
   11345     }
   11346 
   11347     CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
   11348     {
   11349       commandPool = commandPool_;
   11350       return *this;
   11351     }
   11352 
   11353     CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
   11354     {
   11355       level = level_;
   11356       return *this;
   11357     }
   11358 
   11359     CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
   11360     {
   11361       commandBufferCount = commandBufferCount_;
   11362       return *this;
   11363     }
   11364 
   11365     operator VkCommandBufferAllocateInfo const&() const
   11366     {
   11367       return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
   11368     }
   11369 
   11370     operator VkCommandBufferAllocateInfo &()
   11371     {
   11372       return *reinterpret_cast<VkCommandBufferAllocateInfo*>(this);
   11373     }
   11374 
   11375     bool operator==( CommandBufferAllocateInfo const& rhs ) const
   11376     {
   11377       return ( sType == rhs.sType )
   11378           && ( pNext == rhs.pNext )
   11379           && ( commandPool == rhs.commandPool )
   11380           && ( level == rhs.level )
   11381           && ( commandBufferCount == rhs.commandBufferCount );
   11382     }
   11383 
   11384     bool operator!=( CommandBufferAllocateInfo const& rhs ) const
   11385     {
   11386       return !operator==( rhs );
   11387     }
   11388 
   11389   private:
   11390     StructureType sType = StructureType::eCommandBufferAllocateInfo;
   11391 
   11392   public:
   11393     const void* pNext = nullptr;
   11394     CommandPool commandPool;
   11395     CommandBufferLevel level;
   11396     uint32_t commandBufferCount;
   11397   };
   11398   static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
   11399 
   11400   struct RenderPassBeginInfo
   11401   {
   11402     RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(),
   11403                          Framebuffer framebuffer_ = Framebuffer(),
   11404                          Rect2D renderArea_ = Rect2D(),
   11405                          uint32_t clearValueCount_ = 0,
   11406                          const ClearValue* pClearValues_ = nullptr )
   11407       : renderPass( renderPass_ )
   11408       , framebuffer( framebuffer_ )
   11409       , renderArea( renderArea_ )
   11410       , clearValueCount( clearValueCount_ )
   11411       , pClearValues( pClearValues_ )
   11412     {
   11413     }
   11414 
   11415     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
   11416     {
   11417       memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
   11418     }
   11419 
   11420     RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
   11421     {
   11422       memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
   11423       return *this;
   11424     }
   11425     RenderPassBeginInfo& setPNext( const void* pNext_ )
   11426     {
   11427       pNext = pNext_;
   11428       return *this;
   11429     }
   11430 
   11431     RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
   11432     {
   11433       renderPass = renderPass_;
   11434       return *this;
   11435     }
   11436 
   11437     RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
   11438     {
   11439       framebuffer = framebuffer_;
   11440       return *this;
   11441     }
   11442 
   11443     RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
   11444     {
   11445       renderArea = renderArea_;
   11446       return *this;
   11447     }
   11448 
   11449     RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
   11450     {
   11451       clearValueCount = clearValueCount_;
   11452       return *this;
   11453     }
   11454 
   11455     RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
   11456     {
   11457       pClearValues = pClearValues_;
   11458       return *this;
   11459     }
   11460 
   11461     operator VkRenderPassBeginInfo const&() const
   11462     {
   11463       return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
   11464     }
   11465 
   11466     operator VkRenderPassBeginInfo &()
   11467     {
   11468       return *reinterpret_cast<VkRenderPassBeginInfo*>(this);
   11469     }
   11470 
   11471     bool operator==( RenderPassBeginInfo const& rhs ) const
   11472     {
   11473       return ( sType == rhs.sType )
   11474           && ( pNext == rhs.pNext )
   11475           && ( renderPass == rhs.renderPass )
   11476           && ( framebuffer == rhs.framebuffer )
   11477           && ( renderArea == rhs.renderArea )
   11478           && ( clearValueCount == rhs.clearValueCount )
   11479           && ( pClearValues == rhs.pClearValues );
   11480     }
   11481 
   11482     bool operator!=( RenderPassBeginInfo const& rhs ) const
   11483     {
   11484       return !operator==( rhs );
   11485     }
   11486 
   11487   private:
   11488     StructureType sType = StructureType::eRenderPassBeginInfo;
   11489 
   11490   public:
   11491     const void* pNext = nullptr;
   11492     RenderPass renderPass;
   11493     Framebuffer framebuffer;
   11494     Rect2D renderArea;
   11495     uint32_t clearValueCount;
   11496     const ClearValue* pClearValues;
   11497   };
   11498   static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
   11499 
   11500   struct EventCreateInfo
   11501   {
   11502     EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
   11503       : flags( flags_ )
   11504     {
   11505     }
   11506 
   11507     EventCreateInfo( VkEventCreateInfo const & rhs )
   11508     {
   11509       memcpy( this, &rhs, sizeof( EventCreateInfo ) );
   11510     }
   11511 
   11512     EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
   11513     {
   11514       memcpy( this, &rhs, sizeof( EventCreateInfo ) );
   11515       return *this;
   11516     }
   11517     EventCreateInfo& setPNext( const void* pNext_ )
   11518     {
   11519       pNext = pNext_;
   11520       return *this;
   11521     }
   11522 
   11523     EventCreateInfo& setFlags( EventCreateFlags flags_ )
   11524     {
   11525       flags = flags_;
   11526       return *this;
   11527     }
   11528 
   11529     operator VkEventCreateInfo const&() const
   11530     {
   11531       return *reinterpret_cast<const VkEventCreateInfo*>(this);
   11532     }
   11533 
   11534     operator VkEventCreateInfo &()
   11535     {
   11536       return *reinterpret_cast<VkEventCreateInfo*>(this);
   11537     }
   11538 
   11539     bool operator==( EventCreateInfo const& rhs ) const
   11540     {
   11541       return ( sType == rhs.sType )
   11542           && ( pNext == rhs.pNext )
   11543           && ( flags == rhs.flags );
   11544     }
   11545 
   11546     bool operator!=( EventCreateInfo const& rhs ) const
   11547     {
   11548       return !operator==( rhs );
   11549     }
   11550 
   11551   private:
   11552     StructureType sType = StructureType::eEventCreateInfo;
   11553 
   11554   public:
   11555     const void* pNext = nullptr;
   11556     EventCreateFlags flags;
   11557   };
   11558   static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
   11559 
   11560   struct SemaphoreCreateInfo
   11561   {
   11562     SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
   11563       : flags( flags_ )
   11564     {
   11565     }
   11566 
   11567     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
   11568     {
   11569       memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
   11570     }
   11571 
   11572     SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
   11573     {
   11574       memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
   11575       return *this;
   11576     }
   11577     SemaphoreCreateInfo& setPNext( const void* pNext_ )
   11578     {
   11579       pNext = pNext_;
   11580       return *this;
   11581     }
   11582 
   11583     SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
   11584     {
   11585       flags = flags_;
   11586       return *this;
   11587     }
   11588 
   11589     operator VkSemaphoreCreateInfo const&() const
   11590     {
   11591       return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
   11592     }
   11593 
   11594     operator VkSemaphoreCreateInfo &()
   11595     {
   11596       return *reinterpret_cast<VkSemaphoreCreateInfo*>(this);
   11597     }
   11598 
   11599     bool operator==( SemaphoreCreateInfo const& rhs ) const
   11600     {
   11601       return ( sType == rhs.sType )
   11602           && ( pNext == rhs.pNext )
   11603           && ( flags == rhs.flags );
   11604     }
   11605 
   11606     bool operator!=( SemaphoreCreateInfo const& rhs ) const
   11607     {
   11608       return !operator==( rhs );
   11609     }
   11610 
   11611   private:
   11612     StructureType sType = StructureType::eSemaphoreCreateInfo;
   11613 
   11614   public:
   11615     const void* pNext = nullptr;
   11616     SemaphoreCreateFlags flags;
   11617   };
   11618   static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
   11619 
   11620   struct FramebufferCreateInfo
   11621   {
   11622     FramebufferCreateInfo( FramebufferCreateFlags flags_ = FramebufferCreateFlags(),
   11623                            RenderPass renderPass_ = RenderPass(),
   11624                            uint32_t attachmentCount_ = 0,
   11625                            const ImageView* pAttachments_ = nullptr,
   11626                            uint32_t width_ = 0,
   11627                            uint32_t height_ = 0,
   11628                            uint32_t layers_ = 0 )
   11629       : flags( flags_ )
   11630       , renderPass( renderPass_ )
   11631       , attachmentCount( attachmentCount_ )
   11632       , pAttachments( pAttachments_ )
   11633       , width( width_ )
   11634       , height( height_ )
   11635       , layers( layers_ )
   11636     {
   11637     }
   11638 
   11639     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
   11640     {
   11641       memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
   11642     }
   11643 
   11644     FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
   11645     {
   11646       memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
   11647       return *this;
   11648     }
   11649     FramebufferCreateInfo& setPNext( const void* pNext_ )
   11650     {
   11651       pNext = pNext_;
   11652       return *this;
   11653     }
   11654 
   11655     FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
   11656     {
   11657       flags = flags_;
   11658       return *this;
   11659     }
   11660 
   11661     FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
   11662     {
   11663       renderPass = renderPass_;
   11664       return *this;
   11665     }
   11666 
   11667     FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
   11668     {
   11669       attachmentCount = attachmentCount_;
   11670       return *this;
   11671     }
   11672 
   11673     FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
   11674     {
   11675       pAttachments = pAttachments_;
   11676       return *this;
   11677     }
   11678 
   11679     FramebufferCreateInfo& setWidth( uint32_t width_ )
   11680     {
   11681       width = width_;
   11682       return *this;
   11683     }
   11684 
   11685     FramebufferCreateInfo& setHeight( uint32_t height_ )
   11686     {
   11687       height = height_;
   11688       return *this;
   11689     }
   11690 
   11691     FramebufferCreateInfo& setLayers( uint32_t layers_ )
   11692     {
   11693       layers = layers_;
   11694       return *this;
   11695     }
   11696 
   11697     operator VkFramebufferCreateInfo const&() const
   11698     {
   11699       return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
   11700     }
   11701 
   11702     operator VkFramebufferCreateInfo &()
   11703     {
   11704       return *reinterpret_cast<VkFramebufferCreateInfo*>(this);
   11705     }
   11706 
   11707     bool operator==( FramebufferCreateInfo const& rhs ) const
   11708     {
   11709       return ( sType == rhs.sType )
   11710           && ( pNext == rhs.pNext )
   11711           && ( flags == rhs.flags )
   11712           && ( renderPass == rhs.renderPass )
   11713           && ( attachmentCount == rhs.attachmentCount )
   11714           && ( pAttachments == rhs.pAttachments )
   11715           && ( width == rhs.width )
   11716           && ( height == rhs.height )
   11717           && ( layers == rhs.layers );
   11718     }
   11719 
   11720     bool operator!=( FramebufferCreateInfo const& rhs ) const
   11721     {
   11722       return !operator==( rhs );
   11723     }
   11724 
   11725   private:
   11726     StructureType sType = StructureType::eFramebufferCreateInfo;
   11727 
   11728   public:
   11729     const void* pNext = nullptr;
   11730     FramebufferCreateFlags flags;
   11731     RenderPass renderPass;
   11732     uint32_t attachmentCount;
   11733     const ImageView* pAttachments;
   11734     uint32_t width;
   11735     uint32_t height;
   11736     uint32_t layers;
   11737   };
   11738   static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
   11739 
   11740   struct DisplayModeCreateInfoKHR
   11741   {
   11742     DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(),
   11743                               DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
   11744       : flags( flags_ )
   11745       , parameters( parameters_ )
   11746     {
   11747     }
   11748 
   11749     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
   11750     {
   11751       memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
   11752     }
   11753 
   11754     DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
   11755     {
   11756       memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
   11757       return *this;
   11758     }
   11759     DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
   11760     {
   11761       pNext = pNext_;
   11762       return *this;
   11763     }
   11764 
   11765     DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
   11766     {
   11767       flags = flags_;
   11768       return *this;
   11769     }
   11770 
   11771     DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
   11772     {
   11773       parameters = parameters_;
   11774       return *this;
   11775     }
   11776 
   11777     operator VkDisplayModeCreateInfoKHR const&() const
   11778     {
   11779       return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
   11780     }
   11781 
   11782     operator VkDisplayModeCreateInfoKHR &()
   11783     {
   11784       return *reinterpret_cast<VkDisplayModeCreateInfoKHR*>(this);
   11785     }
   11786 
   11787     bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
   11788     {
   11789       return ( sType == rhs.sType )
   11790           && ( pNext == rhs.pNext )
   11791           && ( flags == rhs.flags )
   11792           && ( parameters == rhs.parameters );
   11793     }
   11794 
   11795     bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
   11796     {
   11797       return !operator==( rhs );
   11798     }
   11799 
   11800   private:
   11801     StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
   11802 
   11803   public:
   11804     const void* pNext = nullptr;
   11805     DisplayModeCreateFlagsKHR flags;
   11806     DisplayModeParametersKHR parameters;
   11807   };
   11808   static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
   11809 
   11810   struct DisplayPresentInfoKHR
   11811   {
   11812     DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(),
   11813                            Rect2D dstRect_ = Rect2D(),
   11814                            Bool32 persistent_ = 0 )
   11815       : srcRect( srcRect_ )
   11816       , dstRect( dstRect_ )
   11817       , persistent( persistent_ )
   11818     {
   11819     }
   11820 
   11821     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
   11822     {
   11823       memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
   11824     }
   11825 
   11826     DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
   11827     {
   11828       memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
   11829       return *this;
   11830     }
   11831     DisplayPresentInfoKHR& setPNext( const void* pNext_ )
   11832     {
   11833       pNext = pNext_;
   11834       return *this;
   11835     }
   11836 
   11837     DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
   11838     {
   11839       srcRect = srcRect_;
   11840       return *this;
   11841     }
   11842 
   11843     DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
   11844     {
   11845       dstRect = dstRect_;
   11846       return *this;
   11847     }
   11848 
   11849     DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
   11850     {
   11851       persistent = persistent_;
   11852       return *this;
   11853     }
   11854 
   11855     operator VkDisplayPresentInfoKHR const&() const
   11856     {
   11857       return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
   11858     }
   11859 
   11860     operator VkDisplayPresentInfoKHR &()
   11861     {
   11862       return *reinterpret_cast<VkDisplayPresentInfoKHR*>(this);
   11863     }
   11864 
   11865     bool operator==( DisplayPresentInfoKHR const& rhs ) const
   11866     {
   11867       return ( sType == rhs.sType )
   11868           && ( pNext == rhs.pNext )
   11869           && ( srcRect == rhs.srcRect )
   11870           && ( dstRect == rhs.dstRect )
   11871           && ( persistent == rhs.persistent );
   11872     }
   11873 
   11874     bool operator!=( DisplayPresentInfoKHR const& rhs ) const
   11875     {
   11876       return !operator==( rhs );
   11877     }
   11878 
   11879   private:
   11880     StructureType sType = StructureType::eDisplayPresentInfoKHR;
   11881 
   11882   public:
   11883     const void* pNext = nullptr;
   11884     Rect2D srcRect;
   11885     Rect2D dstRect;
   11886     Bool32 persistent;
   11887   };
   11888   static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
   11889 
   11890 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   11891   struct AndroidSurfaceCreateInfoKHR
   11892   {
   11893     AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(),
   11894                                  struct ANativeWindow* window_ = nullptr )
   11895       : flags( flags_ )
   11896       , window( window_ )
   11897     {
   11898     }
   11899 
   11900     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
   11901     {
   11902       memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
   11903     }
   11904 
   11905     AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
   11906     {
   11907       memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
   11908       return *this;
   11909     }
   11910     AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   11911     {
   11912       pNext = pNext_;
   11913       return *this;
   11914     }
   11915 
   11916     AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
   11917     {
   11918       flags = flags_;
   11919       return *this;
   11920     }
   11921 
   11922     AndroidSurfaceCreateInfoKHR& setWindow( struct ANativeWindow* window_ )
   11923     {
   11924       window = window_;
   11925       return *this;
   11926     }
   11927 
   11928     operator VkAndroidSurfaceCreateInfoKHR const&() const
   11929     {
   11930       return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
   11931     }
   11932 
   11933     operator VkAndroidSurfaceCreateInfoKHR &()
   11934     {
   11935       return *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR*>(this);
   11936     }
   11937 
   11938     bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
   11939     {
   11940       return ( sType == rhs.sType )
   11941           && ( pNext == rhs.pNext )
   11942           && ( flags == rhs.flags )
   11943           && ( window == rhs.window );
   11944     }
   11945 
   11946     bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
   11947     {
   11948       return !operator==( rhs );
   11949     }
   11950 
   11951   private:
   11952     StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR;
   11953 
   11954   public:
   11955     const void* pNext = nullptr;
   11956     AndroidSurfaceCreateFlagsKHR flags;
   11957     struct ANativeWindow* window;
   11958   };
   11959   static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   11960 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   11961 
   11962 #ifdef VK_USE_PLATFORM_VI_NN
   11963   struct ViSurfaceCreateInfoNN
   11964   {
   11965     ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(),
   11966                            void* window_ = nullptr )
   11967       : flags( flags_ )
   11968       , window( window_ )
   11969     {
   11970     }
   11971 
   11972     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
   11973     {
   11974       memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
   11975     }
   11976 
   11977     ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
   11978     {
   11979       memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
   11980       return *this;
   11981     }
   11982     ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
   11983     {
   11984       pNext = pNext_;
   11985       return *this;
   11986     }
   11987 
   11988     ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
   11989     {
   11990       flags = flags_;
   11991       return *this;
   11992     }
   11993 
   11994     ViSurfaceCreateInfoNN& setWindow( void* window_ )
   11995     {
   11996       window = window_;
   11997       return *this;
   11998     }
   11999 
   12000     operator VkViSurfaceCreateInfoNN const&() const
   12001     {
   12002       return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
   12003     }
   12004 
   12005     operator VkViSurfaceCreateInfoNN &()
   12006     {
   12007       return *reinterpret_cast<VkViSurfaceCreateInfoNN*>(this);
   12008     }
   12009 
   12010     bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
   12011     {
   12012       return ( sType == rhs.sType )
   12013           && ( pNext == rhs.pNext )
   12014           && ( flags == rhs.flags )
   12015           && ( window == rhs.window );
   12016     }
   12017 
   12018     bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
   12019     {
   12020       return !operator==( rhs );
   12021     }
   12022 
   12023   private:
   12024     StructureType sType = StructureType::eViSurfaceCreateInfoNN;
   12025 
   12026   public:
   12027     const void* pNext = nullptr;
   12028     ViSurfaceCreateFlagsNN flags;
   12029     void* window;
   12030   };
   12031   static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
   12032 #endif /*VK_USE_PLATFORM_VI_NN*/
   12033 
   12034 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   12035   struct WaylandSurfaceCreateInfoKHR
   12036   {
   12037     WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(),
   12038                                  struct wl_display* display_ = nullptr,
   12039                                  struct wl_surface* surface_ = nullptr )
   12040       : flags( flags_ )
   12041       , display( display_ )
   12042       , surface( surface_ )
   12043     {
   12044     }
   12045 
   12046     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
   12047     {
   12048       memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
   12049     }
   12050 
   12051     WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
   12052     {
   12053       memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
   12054       return *this;
   12055     }
   12056     WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   12057     {
   12058       pNext = pNext_;
   12059       return *this;
   12060     }
   12061 
   12062     WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
   12063     {
   12064       flags = flags_;
   12065       return *this;
   12066     }
   12067 
   12068     WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
   12069     {
   12070       display = display_;
   12071       return *this;
   12072     }
   12073 
   12074     WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
   12075     {
   12076       surface = surface_;
   12077       return *this;
   12078     }
   12079 
   12080     operator VkWaylandSurfaceCreateInfoKHR const&() const
   12081     {
   12082       return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
   12083     }
   12084 
   12085     operator VkWaylandSurfaceCreateInfoKHR &()
   12086     {
   12087       return *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR*>(this);
   12088     }
   12089 
   12090     bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
   12091     {
   12092       return ( sType == rhs.sType )
   12093           && ( pNext == rhs.pNext )
   12094           && ( flags == rhs.flags )
   12095           && ( display == rhs.display )
   12096           && ( surface == rhs.surface );
   12097     }
   12098 
   12099     bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
   12100     {
   12101       return !operator==( rhs );
   12102     }
   12103 
   12104   private:
   12105     StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR;
   12106 
   12107   public:
   12108     const void* pNext = nullptr;
   12109     WaylandSurfaceCreateFlagsKHR flags;
   12110     struct wl_display* display;
   12111     struct wl_surface* surface;
   12112   };
   12113   static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   12114 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   12115 
   12116 #ifdef VK_USE_PLATFORM_WIN32_KHR
   12117   struct Win32SurfaceCreateInfoKHR
   12118   {
   12119     Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(),
   12120                                HINSTANCE hinstance_ = 0,
   12121                                HWND hwnd_ = 0 )
   12122       : flags( flags_ )
   12123       , hinstance( hinstance_ )
   12124       , hwnd( hwnd_ )
   12125     {
   12126     }
   12127 
   12128     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
   12129     {
   12130       memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
   12131     }
   12132 
   12133     Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
   12134     {
   12135       memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
   12136       return *this;
   12137     }
   12138     Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   12139     {
   12140       pNext = pNext_;
   12141       return *this;
   12142     }
   12143 
   12144     Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
   12145     {
   12146       flags = flags_;
   12147       return *this;
   12148     }
   12149 
   12150     Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
   12151     {
   12152       hinstance = hinstance_;
   12153       return *this;
   12154     }
   12155 
   12156     Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
   12157     {
   12158       hwnd = hwnd_;
   12159       return *this;
   12160     }
   12161 
   12162     operator VkWin32SurfaceCreateInfoKHR const&() const
   12163     {
   12164       return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
   12165     }
   12166 
   12167     operator VkWin32SurfaceCreateInfoKHR &()
   12168     {
   12169       return *reinterpret_cast<VkWin32SurfaceCreateInfoKHR*>(this);
   12170     }
   12171 
   12172     bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
   12173     {
   12174       return ( sType == rhs.sType )
   12175           && ( pNext == rhs.pNext )
   12176           && ( flags == rhs.flags )
   12177           && ( hinstance == rhs.hinstance )
   12178           && ( hwnd == rhs.hwnd );
   12179     }
   12180 
   12181     bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
   12182     {
   12183       return !operator==( rhs );
   12184     }
   12185 
   12186   private:
   12187     StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR;
   12188 
   12189   public:
   12190     const void* pNext = nullptr;
   12191     Win32SurfaceCreateFlagsKHR flags;
   12192     HINSTANCE hinstance;
   12193     HWND hwnd;
   12194   };
   12195   static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   12196 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   12197 
   12198 #ifdef VK_USE_PLATFORM_XLIB_KHR
   12199   struct XlibSurfaceCreateInfoKHR
   12200   {
   12201     XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(),
   12202                               Display* dpy_ = nullptr,
   12203                               Window window_ = 0 )
   12204       : flags( flags_ )
   12205       , dpy( dpy_ )
   12206       , window( window_ )
   12207     {
   12208     }
   12209 
   12210     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
   12211     {
   12212       memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
   12213     }
   12214 
   12215     XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
   12216     {
   12217       memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
   12218       return *this;
   12219     }
   12220     XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   12221     {
   12222       pNext = pNext_;
   12223       return *this;
   12224     }
   12225 
   12226     XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
   12227     {
   12228       flags = flags_;
   12229       return *this;
   12230     }
   12231 
   12232     XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
   12233     {
   12234       dpy = dpy_;
   12235       return *this;
   12236     }
   12237 
   12238     XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
   12239     {
   12240       window = window_;
   12241       return *this;
   12242     }
   12243 
   12244     operator VkXlibSurfaceCreateInfoKHR const&() const
   12245     {
   12246       return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
   12247     }
   12248 
   12249     operator VkXlibSurfaceCreateInfoKHR &()
   12250     {
   12251       return *reinterpret_cast<VkXlibSurfaceCreateInfoKHR*>(this);
   12252     }
   12253 
   12254     bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
   12255     {
   12256       return ( sType == rhs.sType )
   12257           && ( pNext == rhs.pNext )
   12258           && ( flags == rhs.flags )
   12259           && ( dpy == rhs.dpy )
   12260           && ( window == rhs.window );
   12261     }
   12262 
   12263     bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
   12264     {
   12265       return !operator==( rhs );
   12266     }
   12267 
   12268   private:
   12269     StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR;
   12270 
   12271   public:
   12272     const void* pNext = nullptr;
   12273     XlibSurfaceCreateFlagsKHR flags;
   12274     Display* dpy;
   12275     Window window;
   12276   };
   12277   static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   12278 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   12279 
   12280 #ifdef VK_USE_PLATFORM_XCB_KHR
   12281   struct XcbSurfaceCreateInfoKHR
   12282   {
   12283     XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(),
   12284                              xcb_connection_t* connection_ = nullptr,
   12285                              xcb_window_t window_ = 0 )
   12286       : flags( flags_ )
   12287       , connection( connection_ )
   12288       , window( window_ )
   12289     {
   12290     }
   12291 
   12292     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
   12293     {
   12294       memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
   12295     }
   12296 
   12297     XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
   12298     {
   12299       memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
   12300       return *this;
   12301     }
   12302     XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   12303     {
   12304       pNext = pNext_;
   12305       return *this;
   12306     }
   12307 
   12308     XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
   12309     {
   12310       flags = flags_;
   12311       return *this;
   12312     }
   12313 
   12314     XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
   12315     {
   12316       connection = connection_;
   12317       return *this;
   12318     }
   12319 
   12320     XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
   12321     {
   12322       window = window_;
   12323       return *this;
   12324     }
   12325 
   12326     operator VkXcbSurfaceCreateInfoKHR const&() const
   12327     {
   12328       return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
   12329     }
   12330 
   12331     operator VkXcbSurfaceCreateInfoKHR &()
   12332     {
   12333       return *reinterpret_cast<VkXcbSurfaceCreateInfoKHR*>(this);
   12334     }
   12335 
   12336     bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
   12337     {
   12338       return ( sType == rhs.sType )
   12339           && ( pNext == rhs.pNext )
   12340           && ( flags == rhs.flags )
   12341           && ( connection == rhs.connection )
   12342           && ( window == rhs.window );
   12343     }
   12344 
   12345     bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
   12346     {
   12347       return !operator==( rhs );
   12348     }
   12349 
   12350   private:
   12351     StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR;
   12352 
   12353   public:
   12354     const void* pNext = nullptr;
   12355     XcbSurfaceCreateFlagsKHR flags;
   12356     xcb_connection_t* connection;
   12357     xcb_window_t window;
   12358   };
   12359   static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   12360 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   12361 
   12362 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   12363   struct ImagePipeSurfaceCreateInfoFUCHSIA
   12364   {
   12365     ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = ImagePipeSurfaceCreateFlagsFUCHSIA(),
   12366                                        zx_handle_t imagePipeHandle_ = 0 )
   12367       : flags( flags_ )
   12368       , imagePipeHandle( imagePipeHandle_ )
   12369     {
   12370     }
   12371 
   12372     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs )
   12373     {
   12374       memcpy( this, &rhs, sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) );
   12375     }
   12376 
   12377     ImagePipeSurfaceCreateInfoFUCHSIA& operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs )
   12378     {
   12379       memcpy( this, &rhs, sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) );
   12380       return *this;
   12381     }
   12382     ImagePipeSurfaceCreateInfoFUCHSIA& setPNext( const void* pNext_ )
   12383     {
   12384       pNext = pNext_;
   12385       return *this;
   12386     }
   12387 
   12388     ImagePipeSurfaceCreateInfoFUCHSIA& setFlags( ImagePipeSurfaceCreateFlagsFUCHSIA flags_ )
   12389     {
   12390       flags = flags_;
   12391       return *this;
   12392     }
   12393 
   12394     ImagePipeSurfaceCreateInfoFUCHSIA& setImagePipeHandle( zx_handle_t imagePipeHandle_ )
   12395     {
   12396       imagePipeHandle = imagePipeHandle_;
   12397       return *this;
   12398     }
   12399 
   12400     operator VkImagePipeSurfaceCreateInfoFUCHSIA const&() const
   12401     {
   12402       return *reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA*>(this);
   12403     }
   12404 
   12405     operator VkImagePipeSurfaceCreateInfoFUCHSIA &()
   12406     {
   12407       return *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA*>(this);
   12408     }
   12409 
   12410     bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const& rhs ) const
   12411     {
   12412       return ( sType == rhs.sType )
   12413           && ( pNext == rhs.pNext )
   12414           && ( flags == rhs.flags )
   12415           && ( imagePipeHandle == rhs.imagePipeHandle );
   12416     }
   12417 
   12418     bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const& rhs ) const
   12419     {
   12420       return !operator==( rhs );
   12421     }
   12422 
   12423   private:
   12424     StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
   12425 
   12426   public:
   12427     const void* pNext = nullptr;
   12428     ImagePipeSurfaceCreateFlagsFUCHSIA flags;
   12429     zx_handle_t imagePipeHandle;
   12430   };
   12431   static_assert( sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) == sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), "struct and wrapper have different size!" );
   12432 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   12433 
   12434   struct DebugMarkerMarkerInfoEXT
   12435   {
   12436     DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr,
   12437                               std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
   12438       : pMarkerName( pMarkerName_ )
   12439     {
   12440       memcpy( &color, color_.data(), 4 * sizeof( float ) );
   12441     }
   12442 
   12443     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
   12444     {
   12445       memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
   12446     }
   12447 
   12448     DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
   12449     {
   12450       memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
   12451       return *this;
   12452     }
   12453     DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
   12454     {
   12455       pNext = pNext_;
   12456       return *this;
   12457     }
   12458 
   12459     DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
   12460     {
   12461       pMarkerName = pMarkerName_;
   12462       return *this;
   12463     }
   12464 
   12465     DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
   12466     {
   12467       memcpy( &color, color_.data(), 4 * sizeof( float ) );
   12468       return *this;
   12469     }
   12470 
   12471     operator VkDebugMarkerMarkerInfoEXT const&() const
   12472     {
   12473       return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
   12474     }
   12475 
   12476     operator VkDebugMarkerMarkerInfoEXT &()
   12477     {
   12478       return *reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>(this);
   12479     }
   12480 
   12481     bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
   12482     {
   12483       return ( sType == rhs.sType )
   12484           && ( pNext == rhs.pNext )
   12485           && ( pMarkerName == rhs.pMarkerName )
   12486           && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
   12487     }
   12488 
   12489     bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
   12490     {
   12491       return !operator==( rhs );
   12492     }
   12493 
   12494   private:
   12495     StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT;
   12496 
   12497   public:
   12498     const void* pNext = nullptr;
   12499     const char* pMarkerName;
   12500     float color[4];
   12501   };
   12502   static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
   12503 
   12504   struct DedicatedAllocationImageCreateInfoNV
   12505   {
   12506     DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
   12507       : dedicatedAllocation( dedicatedAllocation_ )
   12508     {
   12509     }
   12510 
   12511     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
   12512     {
   12513       memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
   12514     }
   12515 
   12516     DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
   12517     {
   12518       memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
   12519       return *this;
   12520     }
   12521     DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
   12522     {
   12523       pNext = pNext_;
   12524       return *this;
   12525     }
   12526 
   12527     DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
   12528     {
   12529       dedicatedAllocation = dedicatedAllocation_;
   12530       return *this;
   12531     }
   12532 
   12533     operator VkDedicatedAllocationImageCreateInfoNV const&() const
   12534     {
   12535       return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
   12536     }
   12537 
   12538     operator VkDedicatedAllocationImageCreateInfoNV &()
   12539     {
   12540       return *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV*>(this);
   12541     }
   12542 
   12543     bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
   12544     {
   12545       return ( sType == rhs.sType )
   12546           && ( pNext == rhs.pNext )
   12547           && ( dedicatedAllocation == rhs.dedicatedAllocation );
   12548     }
   12549 
   12550     bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
   12551     {
   12552       return !operator==( rhs );
   12553     }
   12554 
   12555   private:
   12556     StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV;
   12557 
   12558   public:
   12559     const void* pNext = nullptr;
   12560     Bool32 dedicatedAllocation;
   12561   };
   12562   static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
   12563 
   12564   struct DedicatedAllocationBufferCreateInfoNV
   12565   {
   12566     DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
   12567       : dedicatedAllocation( dedicatedAllocation_ )
   12568     {
   12569     }
   12570 
   12571     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
   12572     {
   12573       memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
   12574     }
   12575 
   12576     DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
   12577     {
   12578       memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
   12579       return *this;
   12580     }
   12581     DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
   12582     {
   12583       pNext = pNext_;
   12584       return *this;
   12585     }
   12586 
   12587     DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
   12588     {
   12589       dedicatedAllocation = dedicatedAllocation_;
   12590       return *this;
   12591     }
   12592 
   12593     operator VkDedicatedAllocationBufferCreateInfoNV const&() const
   12594     {
   12595       return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
   12596     }
   12597 
   12598     operator VkDedicatedAllocationBufferCreateInfoNV &()
   12599     {
   12600       return *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV*>(this);
   12601     }
   12602 
   12603     bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
   12604     {
   12605       return ( sType == rhs.sType )
   12606           && ( pNext == rhs.pNext )
   12607           && ( dedicatedAllocation == rhs.dedicatedAllocation );
   12608     }
   12609 
   12610     bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
   12611     {
   12612       return !operator==( rhs );
   12613     }
   12614 
   12615   private:
   12616     StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV;
   12617 
   12618   public:
   12619     const void* pNext = nullptr;
   12620     Bool32 dedicatedAllocation;
   12621   };
   12622   static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
   12623 
   12624   struct DedicatedAllocationMemoryAllocateInfoNV
   12625   {
   12626     DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(),
   12627                                              Buffer buffer_ = Buffer() )
   12628       : image( image_ )
   12629       , buffer( buffer_ )
   12630     {
   12631     }
   12632 
   12633     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
   12634     {
   12635       memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
   12636     }
   12637 
   12638     DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
   12639     {
   12640       memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
   12641       return *this;
   12642     }
   12643     DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
   12644     {
   12645       pNext = pNext_;
   12646       return *this;
   12647     }
   12648 
   12649     DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
   12650     {
   12651       image = image_;
   12652       return *this;
   12653     }
   12654 
   12655     DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
   12656     {
   12657       buffer = buffer_;
   12658       return *this;
   12659     }
   12660 
   12661     operator VkDedicatedAllocationMemoryAllocateInfoNV const&() const
   12662     {
   12663       return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
   12664     }
   12665 
   12666     operator VkDedicatedAllocationMemoryAllocateInfoNV &()
   12667     {
   12668       return *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
   12669     }
   12670 
   12671     bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
   12672     {
   12673       return ( sType == rhs.sType )
   12674           && ( pNext == rhs.pNext )
   12675           && ( image == rhs.image )
   12676           && ( buffer == rhs.buffer );
   12677     }
   12678 
   12679     bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
   12680     {
   12681       return !operator==( rhs );
   12682     }
   12683 
   12684   private:
   12685     StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
   12686 
   12687   public:
   12688     const void* pNext = nullptr;
   12689     Image image;
   12690     Buffer buffer;
   12691   };
   12692   static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
   12693 
   12694 #ifdef VK_USE_PLATFORM_WIN32_NV
   12695   struct ExportMemoryWin32HandleInfoNV
   12696   {
   12697     ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
   12698                                    DWORD dwAccess_ = 0 )
   12699       : pAttributes( pAttributes_ )
   12700       , dwAccess( dwAccess_ )
   12701     {
   12702     }
   12703 
   12704     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
   12705     {
   12706       memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
   12707     }
   12708 
   12709     ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
   12710     {
   12711       memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
   12712       return *this;
   12713     }
   12714     ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
   12715     {
   12716       pNext = pNext_;
   12717       return *this;
   12718     }
   12719 
   12720     ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
   12721     {
   12722       pAttributes = pAttributes_;
   12723       return *this;
   12724     }
   12725 
   12726     ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
   12727     {
   12728       dwAccess = dwAccess_;
   12729       return *this;
   12730     }
   12731 
   12732     operator VkExportMemoryWin32HandleInfoNV const&() const
   12733     {
   12734       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
   12735     }
   12736 
   12737     operator VkExportMemoryWin32HandleInfoNV &()
   12738     {
   12739       return *reinterpret_cast<VkExportMemoryWin32HandleInfoNV*>(this);
   12740     }
   12741 
   12742     bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
   12743     {
   12744       return ( sType == rhs.sType )
   12745           && ( pNext == rhs.pNext )
   12746           && ( pAttributes == rhs.pAttributes )
   12747           && ( dwAccess == rhs.dwAccess );
   12748     }
   12749 
   12750     bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
   12751     {
   12752       return !operator==( rhs );
   12753     }
   12754 
   12755   private:
   12756     StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV;
   12757 
   12758   public:
   12759     const void* pNext = nullptr;
   12760     const SECURITY_ATTRIBUTES* pAttributes;
   12761     DWORD dwAccess;
   12762   };
   12763   static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
   12764 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   12765 
   12766 #ifdef VK_USE_PLATFORM_WIN32_NV
   12767   struct Win32KeyedMutexAcquireReleaseInfoNV
   12768   {
   12769     Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0,
   12770                                          const DeviceMemory* pAcquireSyncs_ = nullptr,
   12771                                          const uint64_t* pAcquireKeys_ = nullptr,
   12772                                          const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr,
   12773                                          uint32_t releaseCount_ = 0,
   12774                                          const DeviceMemory* pReleaseSyncs_ = nullptr,
   12775                                          const uint64_t* pReleaseKeys_ = nullptr )
   12776       : acquireCount( acquireCount_ )
   12777       , pAcquireSyncs( pAcquireSyncs_ )
   12778       , pAcquireKeys( pAcquireKeys_ )
   12779       , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
   12780       , releaseCount( releaseCount_ )
   12781       , pReleaseSyncs( pReleaseSyncs_ )
   12782       , pReleaseKeys( pReleaseKeys_ )
   12783     {
   12784     }
   12785 
   12786     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
   12787     {
   12788       memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
   12789     }
   12790 
   12791     Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
   12792     {
   12793       memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
   12794       return *this;
   12795     }
   12796     Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
   12797     {
   12798       pNext = pNext_;
   12799       return *this;
   12800     }
   12801 
   12802     Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
   12803     {
   12804       acquireCount = acquireCount_;
   12805       return *this;
   12806     }
   12807 
   12808     Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
   12809     {
   12810       pAcquireSyncs = pAcquireSyncs_;
   12811       return *this;
   12812     }
   12813 
   12814     Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
   12815     {
   12816       pAcquireKeys = pAcquireKeys_;
   12817       return *this;
   12818     }
   12819 
   12820     Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
   12821     {
   12822       pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
   12823       return *this;
   12824     }
   12825 
   12826     Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
   12827     {
   12828       releaseCount = releaseCount_;
   12829       return *this;
   12830     }
   12831 
   12832     Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
   12833     {
   12834       pReleaseSyncs = pReleaseSyncs_;
   12835       return *this;
   12836     }
   12837 
   12838     Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
   12839     {
   12840       pReleaseKeys = pReleaseKeys_;
   12841       return *this;
   12842     }
   12843 
   12844     operator VkWin32KeyedMutexAcquireReleaseInfoNV const&() const
   12845     {
   12846       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
   12847     }
   12848 
   12849     operator VkWin32KeyedMutexAcquireReleaseInfoNV &()
   12850     {
   12851       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
   12852     }
   12853 
   12854     bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
   12855     {
   12856       return ( sType == rhs.sType )
   12857           && ( pNext == rhs.pNext )
   12858           && ( acquireCount == rhs.acquireCount )
   12859           && ( pAcquireSyncs == rhs.pAcquireSyncs )
   12860           && ( pAcquireKeys == rhs.pAcquireKeys )
   12861           && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
   12862           && ( releaseCount == rhs.releaseCount )
   12863           && ( pReleaseSyncs == rhs.pReleaseSyncs )
   12864           && ( pReleaseKeys == rhs.pReleaseKeys );
   12865     }
   12866 
   12867     bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
   12868     {
   12869       return !operator==( rhs );
   12870     }
   12871 
   12872   private:
   12873     StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
   12874 
   12875   public:
   12876     const void* pNext = nullptr;
   12877     uint32_t acquireCount;
   12878     const DeviceMemory* pAcquireSyncs;
   12879     const uint64_t* pAcquireKeys;
   12880     const uint32_t* pAcquireTimeoutMilliseconds;
   12881     uint32_t releaseCount;
   12882     const DeviceMemory* pReleaseSyncs;
   12883     const uint64_t* pReleaseKeys;
   12884   };
   12885   static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
   12886 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   12887 
   12888   struct DeviceGeneratedCommandsFeaturesNVX
   12889   {
   12890     DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
   12891       : computeBindingPointSupport( computeBindingPointSupport_ )
   12892     {
   12893     }
   12894 
   12895     DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
   12896     {
   12897       memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
   12898     }
   12899 
   12900     DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
   12901     {
   12902       memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
   12903       return *this;
   12904     }
   12905     DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
   12906     {
   12907       pNext = pNext_;
   12908       return *this;
   12909     }
   12910 
   12911     DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
   12912     {
   12913       computeBindingPointSupport = computeBindingPointSupport_;
   12914       return *this;
   12915     }
   12916 
   12917     operator VkDeviceGeneratedCommandsFeaturesNVX const&() const
   12918     {
   12919       return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
   12920     }
   12921 
   12922     operator VkDeviceGeneratedCommandsFeaturesNVX &()
   12923     {
   12924       return *reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>(this);
   12925     }
   12926 
   12927     bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
   12928     {
   12929       return ( sType == rhs.sType )
   12930           && ( pNext == rhs.pNext )
   12931           && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
   12932     }
   12933 
   12934     bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
   12935     {
   12936       return !operator==( rhs );
   12937     }
   12938 
   12939   private:
   12940     StructureType sType = StructureType::eDeviceGeneratedCommandsFeaturesNVX;
   12941 
   12942   public:
   12943     const void* pNext = nullptr;
   12944     Bool32 computeBindingPointSupport;
   12945   };
   12946   static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
   12947 
   12948   struct DeviceGeneratedCommandsLimitsNVX
   12949   {
   12950     DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0,
   12951                                       uint32_t maxObjectEntryCounts_ = 0,
   12952                                       uint32_t minSequenceCountBufferOffsetAlignment_ = 0,
   12953                                       uint32_t minSequenceIndexBufferOffsetAlignment_ = 0,
   12954                                       uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
   12955       : maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
   12956       , maxObjectEntryCounts( maxObjectEntryCounts_ )
   12957       , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
   12958       , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
   12959       , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
   12960     {
   12961     }
   12962 
   12963     DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
   12964     {
   12965       memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
   12966     }
   12967 
   12968     DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
   12969     {
   12970       memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
   12971       return *this;
   12972     }
   12973     DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
   12974     {
   12975       pNext = pNext_;
   12976       return *this;
   12977     }
   12978 
   12979     DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
   12980     {
   12981       maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
   12982       return *this;
   12983     }
   12984 
   12985     DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
   12986     {
   12987       maxObjectEntryCounts = maxObjectEntryCounts_;
   12988       return *this;
   12989     }
   12990 
   12991     DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
   12992     {
   12993       minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
   12994       return *this;
   12995     }
   12996 
   12997     DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
   12998     {
   12999       minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
   13000       return *this;
   13001     }
   13002 
   13003     DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
   13004     {
   13005       minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
   13006       return *this;
   13007     }
   13008 
   13009     operator VkDeviceGeneratedCommandsLimitsNVX const&() const
   13010     {
   13011       return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
   13012     }
   13013 
   13014     operator VkDeviceGeneratedCommandsLimitsNVX &()
   13015     {
   13016       return *reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>(this);
   13017     }
   13018 
   13019     bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
   13020     {
   13021       return ( sType == rhs.sType )
   13022           && ( pNext == rhs.pNext )
   13023           && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
   13024           && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
   13025           && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
   13026           && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
   13027           && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
   13028     }
   13029 
   13030     bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
   13031     {
   13032       return !operator==( rhs );
   13033     }
   13034 
   13035   private:
   13036     StructureType sType = StructureType::eDeviceGeneratedCommandsLimitsNVX;
   13037 
   13038   public:
   13039     const void* pNext = nullptr;
   13040     uint32_t maxIndirectCommandsLayoutTokenCount;
   13041     uint32_t maxObjectEntryCounts;
   13042     uint32_t minSequenceCountBufferOffsetAlignment;
   13043     uint32_t minSequenceIndexBufferOffsetAlignment;
   13044     uint32_t minCommandsTokenBufferOffsetAlignment;
   13045   };
   13046   static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
   13047 
   13048   struct CmdReserveSpaceForCommandsInfoNVX
   13049   {
   13050     CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(),
   13051                                        IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(),
   13052                                        uint32_t maxSequencesCount_ = 0 )
   13053       : objectTable( objectTable_ )
   13054       , indirectCommandsLayout( indirectCommandsLayout_ )
   13055       , maxSequencesCount( maxSequencesCount_ )
   13056     {
   13057     }
   13058 
   13059     CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
   13060     {
   13061       memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
   13062     }
   13063 
   13064     CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
   13065     {
   13066       memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
   13067       return *this;
   13068     }
   13069     CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
   13070     {
   13071       pNext = pNext_;
   13072       return *this;
   13073     }
   13074 
   13075     CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
   13076     {
   13077       objectTable = objectTable_;
   13078       return *this;
   13079     }
   13080 
   13081     CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
   13082     {
   13083       indirectCommandsLayout = indirectCommandsLayout_;
   13084       return *this;
   13085     }
   13086 
   13087     CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
   13088     {
   13089       maxSequencesCount = maxSequencesCount_;
   13090       return *this;
   13091     }
   13092 
   13093     operator VkCmdReserveSpaceForCommandsInfoNVX const&() const
   13094     {
   13095       return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
   13096     }
   13097 
   13098     operator VkCmdReserveSpaceForCommandsInfoNVX &()
   13099     {
   13100       return *reinterpret_cast<VkCmdReserveSpaceForCommandsInfoNVX*>(this);
   13101     }
   13102 
   13103     bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
   13104     {
   13105       return ( sType == rhs.sType )
   13106           && ( pNext == rhs.pNext )
   13107           && ( objectTable == rhs.objectTable )
   13108           && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
   13109           && ( maxSequencesCount == rhs.maxSequencesCount );
   13110     }
   13111 
   13112     bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
   13113     {
   13114       return !operator==( rhs );
   13115     }
   13116 
   13117   private:
   13118     StructureType sType = StructureType::eCmdReserveSpaceForCommandsInfoNVX;
   13119 
   13120   public:
   13121     const void* pNext = nullptr;
   13122     ObjectTableNVX objectTable;
   13123     IndirectCommandsLayoutNVX indirectCommandsLayout;
   13124     uint32_t maxSequencesCount;
   13125   };
   13126   static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
   13127 
   13128   struct PhysicalDeviceFeatures2
   13129   {
   13130     PhysicalDeviceFeatures2( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
   13131       : features( features_ )
   13132     {
   13133     }
   13134 
   13135     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs )
   13136     {
   13137       memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
   13138     }
   13139 
   13140     PhysicalDeviceFeatures2& operator=( VkPhysicalDeviceFeatures2 const & rhs )
   13141     {
   13142       memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
   13143       return *this;
   13144     }
   13145     PhysicalDeviceFeatures2& setPNext( void* pNext_ )
   13146     {
   13147       pNext = pNext_;
   13148       return *this;
   13149     }
   13150 
   13151     PhysicalDeviceFeatures2& setFeatures( PhysicalDeviceFeatures features_ )
   13152     {
   13153       features = features_;
   13154       return *this;
   13155     }
   13156 
   13157     operator VkPhysicalDeviceFeatures2 const&() const
   13158     {
   13159       return *reinterpret_cast<const VkPhysicalDeviceFeatures2*>(this);
   13160     }
   13161 
   13162     operator VkPhysicalDeviceFeatures2 &()
   13163     {
   13164       return *reinterpret_cast<VkPhysicalDeviceFeatures2*>(this);
   13165     }
   13166 
   13167     bool operator==( PhysicalDeviceFeatures2 const& rhs ) const
   13168     {
   13169       return ( sType == rhs.sType )
   13170           && ( pNext == rhs.pNext )
   13171           && ( features == rhs.features );
   13172     }
   13173 
   13174     bool operator!=( PhysicalDeviceFeatures2 const& rhs ) const
   13175     {
   13176       return !operator==( rhs );
   13177     }
   13178 
   13179   private:
   13180     StructureType sType = StructureType::ePhysicalDeviceFeatures2;
   13181 
   13182   public:
   13183     void* pNext = nullptr;
   13184     PhysicalDeviceFeatures features;
   13185   };
   13186   static_assert( sizeof( PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), "struct and wrapper have different size!" );
   13187 
   13188   using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
   13189 
   13190   struct PhysicalDevicePushDescriptorPropertiesKHR
   13191   {
   13192     PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
   13193       : maxPushDescriptors( maxPushDescriptors_ )
   13194     {
   13195     }
   13196 
   13197     PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
   13198     {
   13199       memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
   13200     }
   13201 
   13202     PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
   13203     {
   13204       memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
   13205       return *this;
   13206     }
   13207     PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
   13208     {
   13209       pNext = pNext_;
   13210       return *this;
   13211     }
   13212 
   13213     PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
   13214     {
   13215       maxPushDescriptors = maxPushDescriptors_;
   13216       return *this;
   13217     }
   13218 
   13219     operator VkPhysicalDevicePushDescriptorPropertiesKHR const&() const
   13220     {
   13221       return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
   13222     }
   13223 
   13224     operator VkPhysicalDevicePushDescriptorPropertiesKHR &()
   13225     {
   13226       return *reinterpret_cast<VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
   13227     }
   13228 
   13229     bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
   13230     {
   13231       return ( sType == rhs.sType )
   13232           && ( pNext == rhs.pNext )
   13233           && ( maxPushDescriptors == rhs.maxPushDescriptors );
   13234     }
   13235 
   13236     bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
   13237     {
   13238       return !operator==( rhs );
   13239     }
   13240 
   13241   private:
   13242     StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
   13243 
   13244   public:
   13245     void* pNext = nullptr;
   13246     uint32_t maxPushDescriptors;
   13247   };
   13248   static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
   13249 
   13250   struct PresentRegionsKHR
   13251   {
   13252     PresentRegionsKHR( uint32_t swapchainCount_ = 0,
   13253                        const PresentRegionKHR* pRegions_ = nullptr )
   13254       : swapchainCount( swapchainCount_ )
   13255       , pRegions( pRegions_ )
   13256     {
   13257     }
   13258 
   13259     PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
   13260     {
   13261       memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
   13262     }
   13263 
   13264     PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
   13265     {
   13266       memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
   13267       return *this;
   13268     }
   13269     PresentRegionsKHR& setPNext( const void* pNext_ )
   13270     {
   13271       pNext = pNext_;
   13272       return *this;
   13273     }
   13274 
   13275     PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
   13276     {
   13277       swapchainCount = swapchainCount_;
   13278       return *this;
   13279     }
   13280 
   13281     PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
   13282     {
   13283       pRegions = pRegions_;
   13284       return *this;
   13285     }
   13286 
   13287     operator VkPresentRegionsKHR const&() const
   13288     {
   13289       return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
   13290     }
   13291 
   13292     operator VkPresentRegionsKHR &()
   13293     {
   13294       return *reinterpret_cast<VkPresentRegionsKHR*>(this);
   13295     }
   13296 
   13297     bool operator==( PresentRegionsKHR const& rhs ) const
   13298     {
   13299       return ( sType == rhs.sType )
   13300           && ( pNext == rhs.pNext )
   13301           && ( swapchainCount == rhs.swapchainCount )
   13302           && ( pRegions == rhs.pRegions );
   13303     }
   13304 
   13305     bool operator!=( PresentRegionsKHR const& rhs ) const
   13306     {
   13307       return !operator==( rhs );
   13308     }
   13309 
   13310   private:
   13311     StructureType sType = StructureType::ePresentRegionsKHR;
   13312 
   13313   public:
   13314     const void* pNext = nullptr;
   13315     uint32_t swapchainCount;
   13316     const PresentRegionKHR* pRegions;
   13317   };
   13318   static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
   13319 
   13320   struct PhysicalDeviceVariablePointerFeatures
   13321   {
   13322     PhysicalDeviceVariablePointerFeatures( Bool32 variablePointersStorageBuffer_ = 0,
   13323                                            Bool32 variablePointers_ = 0 )
   13324       : variablePointersStorageBuffer( variablePointersStorageBuffer_ )
   13325       , variablePointers( variablePointers_ )
   13326     {
   13327     }
   13328 
   13329     PhysicalDeviceVariablePointerFeatures( VkPhysicalDeviceVariablePointerFeatures const & rhs )
   13330     {
   13331       memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeatures ) );
   13332     }
   13333 
   13334     PhysicalDeviceVariablePointerFeatures& operator=( VkPhysicalDeviceVariablePointerFeatures const & rhs )
   13335     {
   13336       memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeatures ) );
   13337       return *this;
   13338     }
   13339     PhysicalDeviceVariablePointerFeatures& setPNext( void* pNext_ )
   13340     {
   13341       pNext = pNext_;
   13342       return *this;
   13343     }
   13344 
   13345     PhysicalDeviceVariablePointerFeatures& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
   13346     {
   13347       variablePointersStorageBuffer = variablePointersStorageBuffer_;
   13348       return *this;
   13349     }
   13350 
   13351     PhysicalDeviceVariablePointerFeatures& setVariablePointers( Bool32 variablePointers_ )
   13352     {
   13353       variablePointers = variablePointers_;
   13354       return *this;
   13355     }
   13356 
   13357     operator VkPhysicalDeviceVariablePointerFeatures const&() const
   13358     {
   13359       return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeatures*>(this);
   13360     }
   13361 
   13362     operator VkPhysicalDeviceVariablePointerFeatures &()
   13363     {
   13364       return *reinterpret_cast<VkPhysicalDeviceVariablePointerFeatures*>(this);
   13365     }
   13366 
   13367     bool operator==( PhysicalDeviceVariablePointerFeatures const& rhs ) const
   13368     {
   13369       return ( sType == rhs.sType )
   13370           && ( pNext == rhs.pNext )
   13371           && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
   13372           && ( variablePointers == rhs.variablePointers );
   13373     }
   13374 
   13375     bool operator!=( PhysicalDeviceVariablePointerFeatures const& rhs ) const
   13376     {
   13377       return !operator==( rhs );
   13378     }
   13379 
   13380   private:
   13381     StructureType sType = StructureType::ePhysicalDeviceVariablePointerFeatures;
   13382 
   13383   public:
   13384     void* pNext = nullptr;
   13385     Bool32 variablePointersStorageBuffer;
   13386     Bool32 variablePointers;
   13387   };
   13388   static_assert( sizeof( PhysicalDeviceVariablePointerFeatures ) == sizeof( VkPhysicalDeviceVariablePointerFeatures ), "struct and wrapper have different size!" );
   13389 
   13390   using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointerFeatures;
   13391 
   13392   struct PhysicalDeviceIDProperties
   13393   {
   13394     operator VkPhysicalDeviceIDProperties const&() const
   13395     {
   13396       return *reinterpret_cast<const VkPhysicalDeviceIDProperties*>(this);
   13397     }
   13398 
   13399     operator VkPhysicalDeviceIDProperties &()
   13400     {
   13401       return *reinterpret_cast<VkPhysicalDeviceIDProperties*>(this);
   13402     }
   13403 
   13404     bool operator==( PhysicalDeviceIDProperties const& rhs ) const
   13405     {
   13406       return ( sType == rhs.sType )
   13407           && ( pNext == rhs.pNext )
   13408           && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
   13409           && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
   13410           && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE * sizeof( uint8_t ) ) == 0 )
   13411           && ( deviceNodeMask == rhs.deviceNodeMask )
   13412           && ( deviceLUIDValid == rhs.deviceLUIDValid );
   13413     }
   13414 
   13415     bool operator!=( PhysicalDeviceIDProperties const& rhs ) const
   13416     {
   13417       return !operator==( rhs );
   13418     }
   13419 
   13420   private:
   13421     StructureType sType = StructureType::ePhysicalDeviceIdProperties;
   13422 
   13423   public:
   13424     void* pNext = nullptr;
   13425     uint8_t deviceUUID[VK_UUID_SIZE];
   13426     uint8_t driverUUID[VK_UUID_SIZE];
   13427     uint8_t deviceLUID[VK_LUID_SIZE];
   13428     uint32_t deviceNodeMask;
   13429     Bool32 deviceLUIDValid;
   13430   };
   13431   static_assert( sizeof( PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), "struct and wrapper have different size!" );
   13432 
   13433   using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
   13434 
   13435 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13436   struct ExportMemoryWin32HandleInfoKHR
   13437   {
   13438     ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
   13439                                     DWORD dwAccess_ = 0,
   13440                                     LPCWSTR name_ = 0 )
   13441       : pAttributes( pAttributes_ )
   13442       , dwAccess( dwAccess_ )
   13443       , name( name_ )
   13444     {
   13445     }
   13446 
   13447     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
   13448     {
   13449       memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
   13450     }
   13451 
   13452     ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
   13453     {
   13454       memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
   13455       return *this;
   13456     }
   13457     ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
   13458     {
   13459       pNext = pNext_;
   13460       return *this;
   13461     }
   13462 
   13463     ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
   13464     {
   13465       pAttributes = pAttributes_;
   13466       return *this;
   13467     }
   13468 
   13469     ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
   13470     {
   13471       dwAccess = dwAccess_;
   13472       return *this;
   13473     }
   13474 
   13475     ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
   13476     {
   13477       name = name_;
   13478       return *this;
   13479     }
   13480 
   13481     operator VkExportMemoryWin32HandleInfoKHR const&() const
   13482     {
   13483       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
   13484     }
   13485 
   13486     operator VkExportMemoryWin32HandleInfoKHR &()
   13487     {
   13488       return *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR*>(this);
   13489     }
   13490 
   13491     bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
   13492     {
   13493       return ( sType == rhs.sType )
   13494           && ( pNext == rhs.pNext )
   13495           && ( pAttributes == rhs.pAttributes )
   13496           && ( dwAccess == rhs.dwAccess )
   13497           && ( name == rhs.name );
   13498     }
   13499 
   13500     bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
   13501     {
   13502       return !operator==( rhs );
   13503     }
   13504 
   13505   private:
   13506     StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR;
   13507 
   13508   public:
   13509     const void* pNext = nullptr;
   13510     const SECURITY_ATTRIBUTES* pAttributes;
   13511     DWORD dwAccess;
   13512     LPCWSTR name;
   13513   };
   13514   static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   13515 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13516 
   13517 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13518   struct MemoryWin32HandlePropertiesKHR
   13519   {
   13520     operator VkMemoryWin32HandlePropertiesKHR const&() const
   13521     {
   13522       return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
   13523     }
   13524 
   13525     operator VkMemoryWin32HandlePropertiesKHR &()
   13526     {
   13527       return *reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>(this);
   13528     }
   13529 
   13530     bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
   13531     {
   13532       return ( sType == rhs.sType )
   13533           && ( pNext == rhs.pNext )
   13534           && ( memoryTypeBits == rhs.memoryTypeBits );
   13535     }
   13536 
   13537     bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
   13538     {
   13539       return !operator==( rhs );
   13540     }
   13541 
   13542   private:
   13543     StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR;
   13544 
   13545   public:
   13546     void* pNext = nullptr;
   13547     uint32_t memoryTypeBits;
   13548   };
   13549   static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
   13550 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13551 
   13552   struct MemoryFdPropertiesKHR
   13553   {
   13554     operator VkMemoryFdPropertiesKHR const&() const
   13555     {
   13556       return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
   13557     }
   13558 
   13559     operator VkMemoryFdPropertiesKHR &()
   13560     {
   13561       return *reinterpret_cast<VkMemoryFdPropertiesKHR*>(this);
   13562     }
   13563 
   13564     bool operator==( MemoryFdPropertiesKHR const& rhs ) const
   13565     {
   13566       return ( sType == rhs.sType )
   13567           && ( pNext == rhs.pNext )
   13568           && ( memoryTypeBits == rhs.memoryTypeBits );
   13569     }
   13570 
   13571     bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
   13572     {
   13573       return !operator==( rhs );
   13574     }
   13575 
   13576   private:
   13577     StructureType sType = StructureType::eMemoryFdPropertiesKHR;
   13578 
   13579   public:
   13580     void* pNext = nullptr;
   13581     uint32_t memoryTypeBits;
   13582   };
   13583   static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
   13584 
   13585 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13586   struct Win32KeyedMutexAcquireReleaseInfoKHR
   13587   {
   13588     Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0,
   13589                                           const DeviceMemory* pAcquireSyncs_ = nullptr,
   13590                                           const uint64_t* pAcquireKeys_ = nullptr,
   13591                                           const uint32_t* pAcquireTimeouts_ = nullptr,
   13592                                           uint32_t releaseCount_ = 0,
   13593                                           const DeviceMemory* pReleaseSyncs_ = nullptr,
   13594                                           const uint64_t* pReleaseKeys_ = nullptr )
   13595       : acquireCount( acquireCount_ )
   13596       , pAcquireSyncs( pAcquireSyncs_ )
   13597       , pAcquireKeys( pAcquireKeys_ )
   13598       , pAcquireTimeouts( pAcquireTimeouts_ )
   13599       , releaseCount( releaseCount_ )
   13600       , pReleaseSyncs( pReleaseSyncs_ )
   13601       , pReleaseKeys( pReleaseKeys_ )
   13602     {
   13603     }
   13604 
   13605     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
   13606     {
   13607       memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
   13608     }
   13609 
   13610     Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
   13611     {
   13612       memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
   13613       return *this;
   13614     }
   13615     Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
   13616     {
   13617       pNext = pNext_;
   13618       return *this;
   13619     }
   13620 
   13621     Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
   13622     {
   13623       acquireCount = acquireCount_;
   13624       return *this;
   13625     }
   13626 
   13627     Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
   13628     {
   13629       pAcquireSyncs = pAcquireSyncs_;
   13630       return *this;
   13631     }
   13632 
   13633     Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
   13634     {
   13635       pAcquireKeys = pAcquireKeys_;
   13636       return *this;
   13637     }
   13638 
   13639     Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
   13640     {
   13641       pAcquireTimeouts = pAcquireTimeouts_;
   13642       return *this;
   13643     }
   13644 
   13645     Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
   13646     {
   13647       releaseCount = releaseCount_;
   13648       return *this;
   13649     }
   13650 
   13651     Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
   13652     {
   13653       pReleaseSyncs = pReleaseSyncs_;
   13654       return *this;
   13655     }
   13656 
   13657     Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
   13658     {
   13659       pReleaseKeys = pReleaseKeys_;
   13660       return *this;
   13661     }
   13662 
   13663     operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&() const
   13664     {
   13665       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
   13666     }
   13667 
   13668     operator VkWin32KeyedMutexAcquireReleaseInfoKHR &()
   13669     {
   13670       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
   13671     }
   13672 
   13673     bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
   13674     {
   13675       return ( sType == rhs.sType )
   13676           && ( pNext == rhs.pNext )
   13677           && ( acquireCount == rhs.acquireCount )
   13678           && ( pAcquireSyncs == rhs.pAcquireSyncs )
   13679           && ( pAcquireKeys == rhs.pAcquireKeys )
   13680           && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
   13681           && ( releaseCount == rhs.releaseCount )
   13682           && ( pReleaseSyncs == rhs.pReleaseSyncs )
   13683           && ( pReleaseKeys == rhs.pReleaseKeys );
   13684     }
   13685 
   13686     bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
   13687     {
   13688       return !operator==( rhs );
   13689     }
   13690 
   13691   private:
   13692     StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
   13693 
   13694   public:
   13695     const void* pNext = nullptr;
   13696     uint32_t acquireCount;
   13697     const DeviceMemory* pAcquireSyncs;
   13698     const uint64_t* pAcquireKeys;
   13699     const uint32_t* pAcquireTimeouts;
   13700     uint32_t releaseCount;
   13701     const DeviceMemory* pReleaseSyncs;
   13702     const uint64_t* pReleaseKeys;
   13703   };
   13704   static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
   13705 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13706 
   13707 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13708   struct ExportSemaphoreWin32HandleInfoKHR
   13709   {
   13710     ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
   13711                                        DWORD dwAccess_ = 0,
   13712                                        LPCWSTR name_ = 0 )
   13713       : pAttributes( pAttributes_ )
   13714       , dwAccess( dwAccess_ )
   13715       , name( name_ )
   13716     {
   13717     }
   13718 
   13719     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
   13720     {
   13721       memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
   13722     }
   13723 
   13724     ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
   13725     {
   13726       memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
   13727       return *this;
   13728     }
   13729     ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
   13730     {
   13731       pNext = pNext_;
   13732       return *this;
   13733     }
   13734 
   13735     ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
   13736     {
   13737       pAttributes = pAttributes_;
   13738       return *this;
   13739     }
   13740 
   13741     ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
   13742     {
   13743       dwAccess = dwAccess_;
   13744       return *this;
   13745     }
   13746 
   13747     ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
   13748     {
   13749       name = name_;
   13750       return *this;
   13751     }
   13752 
   13753     operator VkExportSemaphoreWin32HandleInfoKHR const&() const
   13754     {
   13755       return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
   13756     }
   13757 
   13758     operator VkExportSemaphoreWin32HandleInfoKHR &()
   13759     {
   13760       return *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR*>(this);
   13761     }
   13762 
   13763     bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
   13764     {
   13765       return ( sType == rhs.sType )
   13766           && ( pNext == rhs.pNext )
   13767           && ( pAttributes == rhs.pAttributes )
   13768           && ( dwAccess == rhs.dwAccess )
   13769           && ( name == rhs.name );
   13770     }
   13771 
   13772     bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
   13773     {
   13774       return !operator==( rhs );
   13775     }
   13776 
   13777   private:
   13778     StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR;
   13779 
   13780   public:
   13781     const void* pNext = nullptr;
   13782     const SECURITY_ATTRIBUTES* pAttributes;
   13783     DWORD dwAccess;
   13784     LPCWSTR name;
   13785   };
   13786   static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   13787 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13788 
   13789 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13790   struct D3D12FenceSubmitInfoKHR
   13791   {
   13792     D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0,
   13793                              const uint64_t* pWaitSemaphoreValues_ = nullptr,
   13794                              uint32_t signalSemaphoreValuesCount_ = 0,
   13795                              const uint64_t* pSignalSemaphoreValues_ = nullptr )
   13796       : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
   13797       , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
   13798       , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
   13799       , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
   13800     {
   13801     }
   13802 
   13803     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
   13804     {
   13805       memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
   13806     }
   13807 
   13808     D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
   13809     {
   13810       memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
   13811       return *this;
   13812     }
   13813     D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
   13814     {
   13815       pNext = pNext_;
   13816       return *this;
   13817     }
   13818 
   13819     D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
   13820     {
   13821       waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
   13822       return *this;
   13823     }
   13824 
   13825     D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
   13826     {
   13827       pWaitSemaphoreValues = pWaitSemaphoreValues_;
   13828       return *this;
   13829     }
   13830 
   13831     D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
   13832     {
   13833       signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
   13834       return *this;
   13835     }
   13836 
   13837     D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
   13838     {
   13839       pSignalSemaphoreValues = pSignalSemaphoreValues_;
   13840       return *this;
   13841     }
   13842 
   13843     operator VkD3D12FenceSubmitInfoKHR const&() const
   13844     {
   13845       return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
   13846     }
   13847 
   13848     operator VkD3D12FenceSubmitInfoKHR &()
   13849     {
   13850       return *reinterpret_cast<VkD3D12FenceSubmitInfoKHR*>(this);
   13851     }
   13852 
   13853     bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
   13854     {
   13855       return ( sType == rhs.sType )
   13856           && ( pNext == rhs.pNext )
   13857           && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
   13858           && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
   13859           && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
   13860           && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
   13861     }
   13862 
   13863     bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
   13864     {
   13865       return !operator==( rhs );
   13866     }
   13867 
   13868   private:
   13869     StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR;
   13870 
   13871   public:
   13872     const void* pNext = nullptr;
   13873     uint32_t waitSemaphoreValuesCount;
   13874     const uint64_t* pWaitSemaphoreValues;
   13875     uint32_t signalSemaphoreValuesCount;
   13876     const uint64_t* pSignalSemaphoreValues;
   13877   };
   13878   static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
   13879 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13880 
   13881 #ifdef VK_USE_PLATFORM_WIN32_KHR
   13882   struct ExportFenceWin32HandleInfoKHR
   13883   {
   13884     ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
   13885                                    DWORD dwAccess_ = 0,
   13886                                    LPCWSTR name_ = 0 )
   13887       : pAttributes( pAttributes_ )
   13888       , dwAccess( dwAccess_ )
   13889       , name( name_ )
   13890     {
   13891     }
   13892 
   13893     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
   13894     {
   13895       memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
   13896     }
   13897 
   13898     ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
   13899     {
   13900       memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
   13901       return *this;
   13902     }
   13903     ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
   13904     {
   13905       pNext = pNext_;
   13906       return *this;
   13907     }
   13908 
   13909     ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
   13910     {
   13911       pAttributes = pAttributes_;
   13912       return *this;
   13913     }
   13914 
   13915     ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
   13916     {
   13917       dwAccess = dwAccess_;
   13918       return *this;
   13919     }
   13920 
   13921     ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
   13922     {
   13923       name = name_;
   13924       return *this;
   13925     }
   13926 
   13927     operator VkExportFenceWin32HandleInfoKHR const&() const
   13928     {
   13929       return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
   13930     }
   13931 
   13932     operator VkExportFenceWin32HandleInfoKHR &()
   13933     {
   13934       return *reinterpret_cast<VkExportFenceWin32HandleInfoKHR*>(this);
   13935     }
   13936 
   13937     bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
   13938     {
   13939       return ( sType == rhs.sType )
   13940           && ( pNext == rhs.pNext )
   13941           && ( pAttributes == rhs.pAttributes )
   13942           && ( dwAccess == rhs.dwAccess )
   13943           && ( name == rhs.name );
   13944     }
   13945 
   13946     bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
   13947     {
   13948       return !operator==( rhs );
   13949     }
   13950 
   13951   private:
   13952     StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR;
   13953 
   13954   public:
   13955     const void* pNext = nullptr;
   13956     const SECURITY_ATTRIBUTES* pAttributes;
   13957     DWORD dwAccess;
   13958     LPCWSTR name;
   13959   };
   13960   static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   13961 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   13962 
   13963   struct PhysicalDeviceMultiviewFeatures
   13964   {
   13965     PhysicalDeviceMultiviewFeatures( Bool32 multiview_ = 0,
   13966                                      Bool32 multiviewGeometryShader_ = 0,
   13967                                      Bool32 multiviewTessellationShader_ = 0 )
   13968       : multiview( multiview_ )
   13969       , multiviewGeometryShader( multiviewGeometryShader_ )
   13970       , multiviewTessellationShader( multiviewTessellationShader_ )
   13971     {
   13972     }
   13973 
   13974     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs )
   13975     {
   13976       memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
   13977     }
   13978 
   13979     PhysicalDeviceMultiviewFeatures& operator=( VkPhysicalDeviceMultiviewFeatures const & rhs )
   13980     {
   13981       memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
   13982       return *this;
   13983     }
   13984     PhysicalDeviceMultiviewFeatures& setPNext( void* pNext_ )
   13985     {
   13986       pNext = pNext_;
   13987       return *this;
   13988     }
   13989 
   13990     PhysicalDeviceMultiviewFeatures& setMultiview( Bool32 multiview_ )
   13991     {
   13992       multiview = multiview_;
   13993       return *this;
   13994     }
   13995 
   13996     PhysicalDeviceMultiviewFeatures& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
   13997     {
   13998       multiviewGeometryShader = multiviewGeometryShader_;
   13999       return *this;
   14000     }
   14001 
   14002     PhysicalDeviceMultiviewFeatures& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
   14003     {
   14004       multiviewTessellationShader = multiviewTessellationShader_;
   14005       return *this;
   14006     }
   14007 
   14008     operator VkPhysicalDeviceMultiviewFeatures const&() const
   14009     {
   14010       return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(this);
   14011     }
   14012 
   14013     operator VkPhysicalDeviceMultiviewFeatures &()
   14014     {
   14015       return *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(this);
   14016     }
   14017 
   14018     bool operator==( PhysicalDeviceMultiviewFeatures const& rhs ) const
   14019     {
   14020       return ( sType == rhs.sType )
   14021           && ( pNext == rhs.pNext )
   14022           && ( multiview == rhs.multiview )
   14023           && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
   14024           && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
   14025     }
   14026 
   14027     bool operator!=( PhysicalDeviceMultiviewFeatures const& rhs ) const
   14028     {
   14029       return !operator==( rhs );
   14030     }
   14031 
   14032   private:
   14033     StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures;
   14034 
   14035   public:
   14036     void* pNext = nullptr;
   14037     Bool32 multiview;
   14038     Bool32 multiviewGeometryShader;
   14039     Bool32 multiviewTessellationShader;
   14040   };
   14041   static_assert( sizeof( PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), "struct and wrapper have different size!" );
   14042 
   14043   using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
   14044 
   14045   struct PhysicalDeviceMultiviewProperties
   14046   {
   14047     operator VkPhysicalDeviceMultiviewProperties const&() const
   14048     {
   14049       return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>(this);
   14050     }
   14051 
   14052     operator VkPhysicalDeviceMultiviewProperties &()
   14053     {
   14054       return *reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>(this);
   14055     }
   14056 
   14057     bool operator==( PhysicalDeviceMultiviewProperties const& rhs ) const
   14058     {
   14059       return ( sType == rhs.sType )
   14060           && ( pNext == rhs.pNext )
   14061           && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
   14062           && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
   14063     }
   14064 
   14065     bool operator!=( PhysicalDeviceMultiviewProperties const& rhs ) const
   14066     {
   14067       return !operator==( rhs );
   14068     }
   14069 
   14070   private:
   14071     StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties;
   14072 
   14073   public:
   14074     void* pNext = nullptr;
   14075     uint32_t maxMultiviewViewCount;
   14076     uint32_t maxMultiviewInstanceIndex;
   14077   };
   14078   static_assert( sizeof( PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), "struct and wrapper have different size!" );
   14079 
   14080   using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
   14081 
   14082   struct RenderPassMultiviewCreateInfo
   14083   {
   14084     RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = 0,
   14085                                    const uint32_t* pViewMasks_ = nullptr,
   14086                                    uint32_t dependencyCount_ = 0,
   14087                                    const int32_t* pViewOffsets_ = nullptr,
   14088                                    uint32_t correlationMaskCount_ = 0,
   14089                                    const uint32_t* pCorrelationMasks_ = nullptr )
   14090       : subpassCount( subpassCount_ )
   14091       , pViewMasks( pViewMasks_ )
   14092       , dependencyCount( dependencyCount_ )
   14093       , pViewOffsets( pViewOffsets_ )
   14094       , correlationMaskCount( correlationMaskCount_ )
   14095       , pCorrelationMasks( pCorrelationMasks_ )
   14096     {
   14097     }
   14098 
   14099     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs )
   14100     {
   14101       memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
   14102     }
   14103 
   14104     RenderPassMultiviewCreateInfo& operator=( VkRenderPassMultiviewCreateInfo const & rhs )
   14105     {
   14106       memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
   14107       return *this;
   14108     }
   14109     RenderPassMultiviewCreateInfo& setPNext( const void* pNext_ )
   14110     {
   14111       pNext = pNext_;
   14112       return *this;
   14113     }
   14114 
   14115     RenderPassMultiviewCreateInfo& setSubpassCount( uint32_t subpassCount_ )
   14116     {
   14117       subpassCount = subpassCount_;
   14118       return *this;
   14119     }
   14120 
   14121     RenderPassMultiviewCreateInfo& setPViewMasks( const uint32_t* pViewMasks_ )
   14122     {
   14123       pViewMasks = pViewMasks_;
   14124       return *this;
   14125     }
   14126 
   14127     RenderPassMultiviewCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
   14128     {
   14129       dependencyCount = dependencyCount_;
   14130       return *this;
   14131     }
   14132 
   14133     RenderPassMultiviewCreateInfo& setPViewOffsets( const int32_t* pViewOffsets_ )
   14134     {
   14135       pViewOffsets = pViewOffsets_;
   14136       return *this;
   14137     }
   14138 
   14139     RenderPassMultiviewCreateInfo& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
   14140     {
   14141       correlationMaskCount = correlationMaskCount_;
   14142       return *this;
   14143     }
   14144 
   14145     RenderPassMultiviewCreateInfo& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
   14146     {
   14147       pCorrelationMasks = pCorrelationMasks_;
   14148       return *this;
   14149     }
   14150 
   14151     operator VkRenderPassMultiviewCreateInfo const&() const
   14152     {
   14153       return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(this);
   14154     }
   14155 
   14156     operator VkRenderPassMultiviewCreateInfo &()
   14157     {
   14158       return *reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(this);
   14159     }
   14160 
   14161     bool operator==( RenderPassMultiviewCreateInfo const& rhs ) const
   14162     {
   14163       return ( sType == rhs.sType )
   14164           && ( pNext == rhs.pNext )
   14165           && ( subpassCount == rhs.subpassCount )
   14166           && ( pViewMasks == rhs.pViewMasks )
   14167           && ( dependencyCount == rhs.dependencyCount )
   14168           && ( pViewOffsets == rhs.pViewOffsets )
   14169           && ( correlationMaskCount == rhs.correlationMaskCount )
   14170           && ( pCorrelationMasks == rhs.pCorrelationMasks );
   14171     }
   14172 
   14173     bool operator!=( RenderPassMultiviewCreateInfo const& rhs ) const
   14174     {
   14175       return !operator==( rhs );
   14176     }
   14177 
   14178   private:
   14179     StructureType sType = StructureType::eRenderPassMultiviewCreateInfo;
   14180 
   14181   public:
   14182     const void* pNext = nullptr;
   14183     uint32_t subpassCount;
   14184     const uint32_t* pViewMasks;
   14185     uint32_t dependencyCount;
   14186     const int32_t* pViewOffsets;
   14187     uint32_t correlationMaskCount;
   14188     const uint32_t* pCorrelationMasks;
   14189   };
   14190   static_assert( sizeof( RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), "struct and wrapper have different size!" );
   14191 
   14192   using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
   14193 
   14194   struct BindBufferMemoryInfo
   14195   {
   14196     BindBufferMemoryInfo( Buffer buffer_ = Buffer(),
   14197                           DeviceMemory memory_ = DeviceMemory(),
   14198                           DeviceSize memoryOffset_ = 0 )
   14199       : buffer( buffer_ )
   14200       , memory( memory_ )
   14201       , memoryOffset( memoryOffset_ )
   14202     {
   14203     }
   14204 
   14205     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs )
   14206     {
   14207       memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
   14208     }
   14209 
   14210     BindBufferMemoryInfo& operator=( VkBindBufferMemoryInfo const & rhs )
   14211     {
   14212       memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
   14213       return *this;
   14214     }
   14215     BindBufferMemoryInfo& setPNext( const void* pNext_ )
   14216     {
   14217       pNext = pNext_;
   14218       return *this;
   14219     }
   14220 
   14221     BindBufferMemoryInfo& setBuffer( Buffer buffer_ )
   14222     {
   14223       buffer = buffer_;
   14224       return *this;
   14225     }
   14226 
   14227     BindBufferMemoryInfo& setMemory( DeviceMemory memory_ )
   14228     {
   14229       memory = memory_;
   14230       return *this;
   14231     }
   14232 
   14233     BindBufferMemoryInfo& setMemoryOffset( DeviceSize memoryOffset_ )
   14234     {
   14235       memoryOffset = memoryOffset_;
   14236       return *this;
   14237     }
   14238 
   14239     operator VkBindBufferMemoryInfo const&() const
   14240     {
   14241       return *reinterpret_cast<const VkBindBufferMemoryInfo*>(this);
   14242     }
   14243 
   14244     operator VkBindBufferMemoryInfo &()
   14245     {
   14246       return *reinterpret_cast<VkBindBufferMemoryInfo*>(this);
   14247     }
   14248 
   14249     bool operator==( BindBufferMemoryInfo const& rhs ) const
   14250     {
   14251       return ( sType == rhs.sType )
   14252           && ( pNext == rhs.pNext )
   14253           && ( buffer == rhs.buffer )
   14254           && ( memory == rhs.memory )
   14255           && ( memoryOffset == rhs.memoryOffset );
   14256     }
   14257 
   14258     bool operator!=( BindBufferMemoryInfo const& rhs ) const
   14259     {
   14260       return !operator==( rhs );
   14261     }
   14262 
   14263   private:
   14264     StructureType sType = StructureType::eBindBufferMemoryInfo;
   14265 
   14266   public:
   14267     const void* pNext = nullptr;
   14268     Buffer buffer;
   14269     DeviceMemory memory;
   14270     DeviceSize memoryOffset;
   14271   };
   14272   static_assert( sizeof( BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "struct and wrapper have different size!" );
   14273 
   14274   using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
   14275 
   14276   struct BindBufferMemoryDeviceGroupInfo
   14277   {
   14278     BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0,
   14279                                      const uint32_t* pDeviceIndices_ = nullptr )
   14280       : deviceIndexCount( deviceIndexCount_ )
   14281       , pDeviceIndices( pDeviceIndices_ )
   14282     {
   14283     }
   14284 
   14285     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs )
   14286     {
   14287       memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
   14288     }
   14289 
   14290     BindBufferMemoryDeviceGroupInfo& operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs )
   14291     {
   14292       memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
   14293       return *this;
   14294     }
   14295     BindBufferMemoryDeviceGroupInfo& setPNext( const void* pNext_ )
   14296     {
   14297       pNext = pNext_;
   14298       return *this;
   14299     }
   14300 
   14301     BindBufferMemoryDeviceGroupInfo& setDeviceIndexCount( uint32_t deviceIndexCount_ )
   14302     {
   14303       deviceIndexCount = deviceIndexCount_;
   14304       return *this;
   14305     }
   14306 
   14307     BindBufferMemoryDeviceGroupInfo& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
   14308     {
   14309       pDeviceIndices = pDeviceIndices_;
   14310       return *this;
   14311     }
   14312 
   14313     operator VkBindBufferMemoryDeviceGroupInfo const&() const
   14314     {
   14315       return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>(this);
   14316     }
   14317 
   14318     operator VkBindBufferMemoryDeviceGroupInfo &()
   14319     {
   14320       return *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(this);
   14321     }
   14322 
   14323     bool operator==( BindBufferMemoryDeviceGroupInfo const& rhs ) const
   14324     {
   14325       return ( sType == rhs.sType )
   14326           && ( pNext == rhs.pNext )
   14327           && ( deviceIndexCount == rhs.deviceIndexCount )
   14328           && ( pDeviceIndices == rhs.pDeviceIndices );
   14329     }
   14330 
   14331     bool operator!=( BindBufferMemoryDeviceGroupInfo const& rhs ) const
   14332     {
   14333       return !operator==( rhs );
   14334     }
   14335 
   14336   private:
   14337     StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo;
   14338 
   14339   public:
   14340     const void* pNext = nullptr;
   14341     uint32_t deviceIndexCount;
   14342     const uint32_t* pDeviceIndices;
   14343   };
   14344   static_assert( sizeof( BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), "struct and wrapper have different size!" );
   14345 
   14346   using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
   14347 
   14348   struct BindImageMemoryInfo
   14349   {
   14350     BindImageMemoryInfo( Image image_ = Image(),
   14351                          DeviceMemory memory_ = DeviceMemory(),
   14352                          DeviceSize memoryOffset_ = 0 )
   14353       : image( image_ )
   14354       , memory( memory_ )
   14355       , memoryOffset( memoryOffset_ )
   14356     {
   14357     }
   14358 
   14359     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs )
   14360     {
   14361       memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
   14362     }
   14363 
   14364     BindImageMemoryInfo& operator=( VkBindImageMemoryInfo const & rhs )
   14365     {
   14366       memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
   14367       return *this;
   14368     }
   14369     BindImageMemoryInfo& setPNext( const void* pNext_ )
   14370     {
   14371       pNext = pNext_;
   14372       return *this;
   14373     }
   14374 
   14375     BindImageMemoryInfo& setImage( Image image_ )
   14376     {
   14377       image = image_;
   14378       return *this;
   14379     }
   14380 
   14381     BindImageMemoryInfo& setMemory( DeviceMemory memory_ )
   14382     {
   14383       memory = memory_;
   14384       return *this;
   14385     }
   14386 
   14387     BindImageMemoryInfo& setMemoryOffset( DeviceSize memoryOffset_ )
   14388     {
   14389       memoryOffset = memoryOffset_;
   14390       return *this;
   14391     }
   14392 
   14393     operator VkBindImageMemoryInfo const&() const
   14394     {
   14395       return *reinterpret_cast<const VkBindImageMemoryInfo*>(this);
   14396     }
   14397 
   14398     operator VkBindImageMemoryInfo &()
   14399     {
   14400       return *reinterpret_cast<VkBindImageMemoryInfo*>(this);
   14401     }
   14402 
   14403     bool operator==( BindImageMemoryInfo const& rhs ) const
   14404     {
   14405       return ( sType == rhs.sType )
   14406           && ( pNext == rhs.pNext )
   14407           && ( image == rhs.image )
   14408           && ( memory == rhs.memory )
   14409           && ( memoryOffset == rhs.memoryOffset );
   14410     }
   14411 
   14412     bool operator!=( BindImageMemoryInfo const& rhs ) const
   14413     {
   14414       return !operator==( rhs );
   14415     }
   14416 
   14417   private:
   14418     StructureType sType = StructureType::eBindImageMemoryInfo;
   14419 
   14420   public:
   14421     const void* pNext = nullptr;
   14422     Image image;
   14423     DeviceMemory memory;
   14424     DeviceSize memoryOffset;
   14425   };
   14426   static_assert( sizeof( BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "struct and wrapper have different size!" );
   14427 
   14428   using BindImageMemoryInfoKHR = BindImageMemoryInfo;
   14429 
   14430   struct BindImageMemoryDeviceGroupInfo
   14431   {
   14432     BindImageMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0,
   14433                                     const uint32_t* pDeviceIndices_ = nullptr,
   14434                                     uint32_t splitInstanceBindRegionCount_ = 0,
   14435                                     const Rect2D* pSplitInstanceBindRegions_ = nullptr )
   14436       : deviceIndexCount( deviceIndexCount_ )
   14437       , pDeviceIndices( pDeviceIndices_ )
   14438       , splitInstanceBindRegionCount( splitInstanceBindRegionCount_ )
   14439       , pSplitInstanceBindRegions( pSplitInstanceBindRegions_ )
   14440     {
   14441     }
   14442 
   14443     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs )
   14444     {
   14445       memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
   14446     }
   14447 
   14448     BindImageMemoryDeviceGroupInfo& operator=( VkBindImageMemoryDeviceGroupInfo const & rhs )
   14449     {
   14450       memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
   14451       return *this;
   14452     }
   14453     BindImageMemoryDeviceGroupInfo& setPNext( const void* pNext_ )
   14454     {
   14455       pNext = pNext_;
   14456       return *this;
   14457     }
   14458 
   14459     BindImageMemoryDeviceGroupInfo& setDeviceIndexCount( uint32_t deviceIndexCount_ )
   14460     {
   14461       deviceIndexCount = deviceIndexCount_;
   14462       return *this;
   14463     }
   14464 
   14465     BindImageMemoryDeviceGroupInfo& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
   14466     {
   14467       pDeviceIndices = pDeviceIndices_;
   14468       return *this;
   14469     }
   14470 
   14471     BindImageMemoryDeviceGroupInfo& setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ )
   14472     {
   14473       splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
   14474       return *this;
   14475     }
   14476 
   14477     BindImageMemoryDeviceGroupInfo& setPSplitInstanceBindRegions( const Rect2D* pSplitInstanceBindRegions_ )
   14478     {
   14479       pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
   14480       return *this;
   14481     }
   14482 
   14483     operator VkBindImageMemoryDeviceGroupInfo const&() const
   14484     {
   14485       return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>(this);
   14486     }
   14487 
   14488     operator VkBindImageMemoryDeviceGroupInfo &()
   14489     {
   14490       return *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(this);
   14491     }
   14492 
   14493     bool operator==( BindImageMemoryDeviceGroupInfo const& rhs ) const
   14494     {
   14495       return ( sType == rhs.sType )
   14496           && ( pNext == rhs.pNext )
   14497           && ( deviceIndexCount == rhs.deviceIndexCount )
   14498           && ( pDeviceIndices == rhs.pDeviceIndices )
   14499           && ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount )
   14500           && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions );
   14501     }
   14502 
   14503     bool operator!=( BindImageMemoryDeviceGroupInfo const& rhs ) const
   14504     {
   14505       return !operator==( rhs );
   14506     }
   14507 
   14508   private:
   14509     StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo;
   14510 
   14511   public:
   14512     const void* pNext = nullptr;
   14513     uint32_t deviceIndexCount;
   14514     const uint32_t* pDeviceIndices;
   14515     uint32_t splitInstanceBindRegionCount;
   14516     const Rect2D* pSplitInstanceBindRegions;
   14517   };
   14518   static_assert( sizeof( BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), "struct and wrapper have different size!" );
   14519 
   14520   using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
   14521 
   14522   struct DeviceGroupRenderPassBeginInfo
   14523   {
   14524     DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = 0,
   14525                                     uint32_t deviceRenderAreaCount_ = 0,
   14526                                     const Rect2D* pDeviceRenderAreas_ = nullptr )
   14527       : deviceMask( deviceMask_ )
   14528       , deviceRenderAreaCount( deviceRenderAreaCount_ )
   14529       , pDeviceRenderAreas( pDeviceRenderAreas_ )
   14530     {
   14531     }
   14532 
   14533     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs )
   14534     {
   14535       memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
   14536     }
   14537 
   14538     DeviceGroupRenderPassBeginInfo& operator=( VkDeviceGroupRenderPassBeginInfo const & rhs )
   14539     {
   14540       memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
   14541       return *this;
   14542     }
   14543     DeviceGroupRenderPassBeginInfo& setPNext( const void* pNext_ )
   14544     {
   14545       pNext = pNext_;
   14546       return *this;
   14547     }
   14548 
   14549     DeviceGroupRenderPassBeginInfo& setDeviceMask( uint32_t deviceMask_ )
   14550     {
   14551       deviceMask = deviceMask_;
   14552       return *this;
   14553     }
   14554 
   14555     DeviceGroupRenderPassBeginInfo& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
   14556     {
   14557       deviceRenderAreaCount = deviceRenderAreaCount_;
   14558       return *this;
   14559     }
   14560 
   14561     DeviceGroupRenderPassBeginInfo& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
   14562     {
   14563       pDeviceRenderAreas = pDeviceRenderAreas_;
   14564       return *this;
   14565     }
   14566 
   14567     operator VkDeviceGroupRenderPassBeginInfo const&() const
   14568     {
   14569       return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>(this);
   14570     }
   14571 
   14572     operator VkDeviceGroupRenderPassBeginInfo &()
   14573     {
   14574       return *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(this);
   14575     }
   14576 
   14577     bool operator==( DeviceGroupRenderPassBeginInfo const& rhs ) const
   14578     {
   14579       return ( sType == rhs.sType )
   14580           && ( pNext == rhs.pNext )
   14581           && ( deviceMask == rhs.deviceMask )
   14582           && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
   14583           && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
   14584     }
   14585 
   14586     bool operator!=( DeviceGroupRenderPassBeginInfo const& rhs ) const
   14587     {
   14588       return !operator==( rhs );
   14589     }
   14590 
   14591   private:
   14592     StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo;
   14593 
   14594   public:
   14595     const void* pNext = nullptr;
   14596     uint32_t deviceMask;
   14597     uint32_t deviceRenderAreaCount;
   14598     const Rect2D* pDeviceRenderAreas;
   14599   };
   14600   static_assert( sizeof( DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), "struct and wrapper have different size!" );
   14601 
   14602   using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
   14603 
   14604   struct DeviceGroupCommandBufferBeginInfo
   14605   {
   14606     DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = 0 )
   14607       : deviceMask( deviceMask_ )
   14608     {
   14609     }
   14610 
   14611     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs )
   14612     {
   14613       memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
   14614     }
   14615 
   14616     DeviceGroupCommandBufferBeginInfo& operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs )
   14617     {
   14618       memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
   14619       return *this;
   14620     }
   14621     DeviceGroupCommandBufferBeginInfo& setPNext( const void* pNext_ )
   14622     {
   14623       pNext = pNext_;
   14624       return *this;
   14625     }
   14626 
   14627     DeviceGroupCommandBufferBeginInfo& setDeviceMask( uint32_t deviceMask_ )
   14628     {
   14629       deviceMask = deviceMask_;
   14630       return *this;
   14631     }
   14632 
   14633     operator VkDeviceGroupCommandBufferBeginInfo const&() const
   14634     {
   14635       return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>(this);
   14636     }
   14637 
   14638     operator VkDeviceGroupCommandBufferBeginInfo &()
   14639     {
   14640       return *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(this);
   14641     }
   14642 
   14643     bool operator==( DeviceGroupCommandBufferBeginInfo const& rhs ) const
   14644     {
   14645       return ( sType == rhs.sType )
   14646           && ( pNext == rhs.pNext )
   14647           && ( deviceMask == rhs.deviceMask );
   14648     }
   14649 
   14650     bool operator!=( DeviceGroupCommandBufferBeginInfo const& rhs ) const
   14651     {
   14652       return !operator==( rhs );
   14653     }
   14654 
   14655   private:
   14656     StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo;
   14657 
   14658   public:
   14659     const void* pNext = nullptr;
   14660     uint32_t deviceMask;
   14661   };
   14662   static_assert( sizeof( DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), "struct and wrapper have different size!" );
   14663 
   14664   using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
   14665 
   14666   struct DeviceGroupSubmitInfo
   14667   {
   14668     DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = 0,
   14669                            const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr,
   14670                            uint32_t commandBufferCount_ = 0,
   14671                            const uint32_t* pCommandBufferDeviceMasks_ = nullptr,
   14672                            uint32_t signalSemaphoreCount_ = 0,
   14673                            const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr )
   14674       : waitSemaphoreCount( waitSemaphoreCount_ )
   14675       , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
   14676       , commandBufferCount( commandBufferCount_ )
   14677       , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
   14678       , signalSemaphoreCount( signalSemaphoreCount_ )
   14679       , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
   14680     {
   14681     }
   14682 
   14683     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs )
   14684     {
   14685       memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
   14686     }
   14687 
   14688     DeviceGroupSubmitInfo& operator=( VkDeviceGroupSubmitInfo const & rhs )
   14689     {
   14690       memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
   14691       return *this;
   14692     }
   14693     DeviceGroupSubmitInfo& setPNext( const void* pNext_ )
   14694     {
   14695       pNext = pNext_;
   14696       return *this;
   14697     }
   14698 
   14699     DeviceGroupSubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
   14700     {
   14701       waitSemaphoreCount = waitSemaphoreCount_;
   14702       return *this;
   14703     }
   14704 
   14705     DeviceGroupSubmitInfo& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
   14706     {
   14707       pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
   14708       return *this;
   14709     }
   14710 
   14711     DeviceGroupSubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
   14712     {
   14713       commandBufferCount = commandBufferCount_;
   14714       return *this;
   14715     }
   14716 
   14717     DeviceGroupSubmitInfo& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
   14718     {
   14719       pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
   14720       return *this;
   14721     }
   14722 
   14723     DeviceGroupSubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
   14724     {
   14725       signalSemaphoreCount = signalSemaphoreCount_;
   14726       return *this;
   14727     }
   14728 
   14729     DeviceGroupSubmitInfo& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
   14730     {
   14731       pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
   14732       return *this;
   14733     }
   14734 
   14735     operator VkDeviceGroupSubmitInfo const&() const
   14736     {
   14737       return *reinterpret_cast<const VkDeviceGroupSubmitInfo*>(this);
   14738     }
   14739 
   14740     operator VkDeviceGroupSubmitInfo &()
   14741     {
   14742       return *reinterpret_cast<VkDeviceGroupSubmitInfo*>(this);
   14743     }
   14744 
   14745     bool operator==( DeviceGroupSubmitInfo const& rhs ) const
   14746     {
   14747       return ( sType == rhs.sType )
   14748           && ( pNext == rhs.pNext )
   14749           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
   14750           && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
   14751           && ( commandBufferCount == rhs.commandBufferCount )
   14752           && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
   14753           && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
   14754           && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
   14755     }
   14756 
   14757     bool operator!=( DeviceGroupSubmitInfo const& rhs ) const
   14758     {
   14759       return !operator==( rhs );
   14760     }
   14761 
   14762   private:
   14763     StructureType sType = StructureType::eDeviceGroupSubmitInfo;
   14764 
   14765   public:
   14766     const void* pNext = nullptr;
   14767     uint32_t waitSemaphoreCount;
   14768     const uint32_t* pWaitSemaphoreDeviceIndices;
   14769     uint32_t commandBufferCount;
   14770     const uint32_t* pCommandBufferDeviceMasks;
   14771     uint32_t signalSemaphoreCount;
   14772     const uint32_t* pSignalSemaphoreDeviceIndices;
   14773   };
   14774   static_assert( sizeof( DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), "struct and wrapper have different size!" );
   14775 
   14776   using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
   14777 
   14778   struct DeviceGroupBindSparseInfo
   14779   {
   14780     DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = 0,
   14781                                uint32_t memoryDeviceIndex_ = 0 )
   14782       : resourceDeviceIndex( resourceDeviceIndex_ )
   14783       , memoryDeviceIndex( memoryDeviceIndex_ )
   14784     {
   14785     }
   14786 
   14787     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs )
   14788     {
   14789       memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
   14790     }
   14791 
   14792     DeviceGroupBindSparseInfo& operator=( VkDeviceGroupBindSparseInfo const & rhs )
   14793     {
   14794       memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
   14795       return *this;
   14796     }
   14797     DeviceGroupBindSparseInfo& setPNext( const void* pNext_ )
   14798     {
   14799       pNext = pNext_;
   14800       return *this;
   14801     }
   14802 
   14803     DeviceGroupBindSparseInfo& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
   14804     {
   14805       resourceDeviceIndex = resourceDeviceIndex_;
   14806       return *this;
   14807     }
   14808 
   14809     DeviceGroupBindSparseInfo& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
   14810     {
   14811       memoryDeviceIndex = memoryDeviceIndex_;
   14812       return *this;
   14813     }
   14814 
   14815     operator VkDeviceGroupBindSparseInfo const&() const
   14816     {
   14817       return *reinterpret_cast<const VkDeviceGroupBindSparseInfo*>(this);
   14818     }
   14819 
   14820     operator VkDeviceGroupBindSparseInfo &()
   14821     {
   14822       return *reinterpret_cast<VkDeviceGroupBindSparseInfo*>(this);
   14823     }
   14824 
   14825     bool operator==( DeviceGroupBindSparseInfo const& rhs ) const
   14826     {
   14827       return ( sType == rhs.sType )
   14828           && ( pNext == rhs.pNext )
   14829           && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
   14830           && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
   14831     }
   14832 
   14833     bool operator!=( DeviceGroupBindSparseInfo const& rhs ) const
   14834     {
   14835       return !operator==( rhs );
   14836     }
   14837 
   14838   private:
   14839     StructureType sType = StructureType::eDeviceGroupBindSparseInfo;
   14840 
   14841   public:
   14842     const void* pNext = nullptr;
   14843     uint32_t resourceDeviceIndex;
   14844     uint32_t memoryDeviceIndex;
   14845   };
   14846   static_assert( sizeof( DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), "struct and wrapper have different size!" );
   14847 
   14848   using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
   14849 
   14850   struct ImageSwapchainCreateInfoKHR
   14851   {
   14852     ImageSwapchainCreateInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR() )
   14853       : swapchain( swapchain_ )
   14854     {
   14855     }
   14856 
   14857     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs )
   14858     {
   14859       memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
   14860     }
   14861 
   14862     ImageSwapchainCreateInfoKHR& operator=( VkImageSwapchainCreateInfoKHR const & rhs )
   14863     {
   14864       memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
   14865       return *this;
   14866     }
   14867     ImageSwapchainCreateInfoKHR& setPNext( const void* pNext_ )
   14868     {
   14869       pNext = pNext_;
   14870       return *this;
   14871     }
   14872 
   14873     ImageSwapchainCreateInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
   14874     {
   14875       swapchain = swapchain_;
   14876       return *this;
   14877     }
   14878 
   14879     operator VkImageSwapchainCreateInfoKHR const&() const
   14880     {
   14881       return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>(this);
   14882     }
   14883 
   14884     operator VkImageSwapchainCreateInfoKHR &()
   14885     {
   14886       return *reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(this);
   14887     }
   14888 
   14889     bool operator==( ImageSwapchainCreateInfoKHR const& rhs ) const
   14890     {
   14891       return ( sType == rhs.sType )
   14892           && ( pNext == rhs.pNext )
   14893           && ( swapchain == rhs.swapchain );
   14894     }
   14895 
   14896     bool operator!=( ImageSwapchainCreateInfoKHR const& rhs ) const
   14897     {
   14898       return !operator==( rhs );
   14899     }
   14900 
   14901   private:
   14902     StructureType sType = StructureType::eImageSwapchainCreateInfoKHR;
   14903 
   14904   public:
   14905     const void* pNext = nullptr;
   14906     SwapchainKHR swapchain;
   14907   };
   14908   static_assert( sizeof( ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
   14909 
   14910   struct BindImageMemorySwapchainInfoKHR
   14911   {
   14912     BindImageMemorySwapchainInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR(),
   14913                                      uint32_t imageIndex_ = 0 )
   14914       : swapchain( swapchain_ )
   14915       , imageIndex( imageIndex_ )
   14916     {
   14917     }
   14918 
   14919     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs )
   14920     {
   14921       memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
   14922     }
   14923 
   14924     BindImageMemorySwapchainInfoKHR& operator=( VkBindImageMemorySwapchainInfoKHR const & rhs )
   14925     {
   14926       memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
   14927       return *this;
   14928     }
   14929     BindImageMemorySwapchainInfoKHR& setPNext( const void* pNext_ )
   14930     {
   14931       pNext = pNext_;
   14932       return *this;
   14933     }
   14934 
   14935     BindImageMemorySwapchainInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
   14936     {
   14937       swapchain = swapchain_;
   14938       return *this;
   14939     }
   14940 
   14941     BindImageMemorySwapchainInfoKHR& setImageIndex( uint32_t imageIndex_ )
   14942     {
   14943       imageIndex = imageIndex_;
   14944       return *this;
   14945     }
   14946 
   14947     operator VkBindImageMemorySwapchainInfoKHR const&() const
   14948     {
   14949       return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>(this);
   14950     }
   14951 
   14952     operator VkBindImageMemorySwapchainInfoKHR &()
   14953     {
   14954       return *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(this);
   14955     }
   14956 
   14957     bool operator==( BindImageMemorySwapchainInfoKHR const& rhs ) const
   14958     {
   14959       return ( sType == rhs.sType )
   14960           && ( pNext == rhs.pNext )
   14961           && ( swapchain == rhs.swapchain )
   14962           && ( imageIndex == rhs.imageIndex );
   14963     }
   14964 
   14965     bool operator!=( BindImageMemorySwapchainInfoKHR const& rhs ) const
   14966     {
   14967       return !operator==( rhs );
   14968     }
   14969 
   14970   private:
   14971     StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR;
   14972 
   14973   public:
   14974     const void* pNext = nullptr;
   14975     SwapchainKHR swapchain;
   14976     uint32_t imageIndex;
   14977   };
   14978   static_assert( sizeof( BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), "struct and wrapper have different size!" );
   14979 
   14980   struct AcquireNextImageInfoKHR
   14981   {
   14982     AcquireNextImageInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR(),
   14983                              uint64_t timeout_ = 0,
   14984                              Semaphore semaphore_ = Semaphore(),
   14985                              Fence fence_ = Fence(),
   14986                              uint32_t deviceMask_ = 0 )
   14987       : swapchain( swapchain_ )
   14988       , timeout( timeout_ )
   14989       , semaphore( semaphore_ )
   14990       , fence( fence_ )
   14991       , deviceMask( deviceMask_ )
   14992     {
   14993     }
   14994 
   14995     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs )
   14996     {
   14997       memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
   14998     }
   14999 
   15000     AcquireNextImageInfoKHR& operator=( VkAcquireNextImageInfoKHR const & rhs )
   15001     {
   15002       memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
   15003       return *this;
   15004     }
   15005     AcquireNextImageInfoKHR& setPNext( const void* pNext_ )
   15006     {
   15007       pNext = pNext_;
   15008       return *this;
   15009     }
   15010 
   15011     AcquireNextImageInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
   15012     {
   15013       swapchain = swapchain_;
   15014       return *this;
   15015     }
   15016 
   15017     AcquireNextImageInfoKHR& setTimeout( uint64_t timeout_ )
   15018     {
   15019       timeout = timeout_;
   15020       return *this;
   15021     }
   15022 
   15023     AcquireNextImageInfoKHR& setSemaphore( Semaphore semaphore_ )
   15024     {
   15025       semaphore = semaphore_;
   15026       return *this;
   15027     }
   15028 
   15029     AcquireNextImageInfoKHR& setFence( Fence fence_ )
   15030     {
   15031       fence = fence_;
   15032       return *this;
   15033     }
   15034 
   15035     AcquireNextImageInfoKHR& setDeviceMask( uint32_t deviceMask_ )
   15036     {
   15037       deviceMask = deviceMask_;
   15038       return *this;
   15039     }
   15040 
   15041     operator VkAcquireNextImageInfoKHR const&() const
   15042     {
   15043       return *reinterpret_cast<const VkAcquireNextImageInfoKHR*>(this);
   15044     }
   15045 
   15046     operator VkAcquireNextImageInfoKHR &()
   15047     {
   15048       return *reinterpret_cast<VkAcquireNextImageInfoKHR*>(this);
   15049     }
   15050 
   15051     bool operator==( AcquireNextImageInfoKHR const& rhs ) const
   15052     {
   15053       return ( sType == rhs.sType )
   15054           && ( pNext == rhs.pNext )
   15055           && ( swapchain == rhs.swapchain )
   15056           && ( timeout == rhs.timeout )
   15057           && ( semaphore == rhs.semaphore )
   15058           && ( fence == rhs.fence )
   15059           && ( deviceMask == rhs.deviceMask );
   15060     }
   15061 
   15062     bool operator!=( AcquireNextImageInfoKHR const& rhs ) const
   15063     {
   15064       return !operator==( rhs );
   15065     }
   15066 
   15067   private:
   15068     StructureType sType = StructureType::eAcquireNextImageInfoKHR;
   15069 
   15070   public:
   15071     const void* pNext = nullptr;
   15072     SwapchainKHR swapchain;
   15073     uint64_t timeout;
   15074     Semaphore semaphore;
   15075     Fence fence;
   15076     uint32_t deviceMask;
   15077   };
   15078   static_assert( sizeof( AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), "struct and wrapper have different size!" );
   15079 
   15080   struct HdrMetadataEXT
   15081   {
   15082     HdrMetadataEXT( XYColorEXT displayPrimaryRed_ = XYColorEXT(),
   15083                     XYColorEXT displayPrimaryGreen_ = XYColorEXT(),
   15084                     XYColorEXT displayPrimaryBlue_ = XYColorEXT(),
   15085                     XYColorEXT whitePoint_ = XYColorEXT(),
   15086                     float maxLuminance_ = 0,
   15087                     float minLuminance_ = 0,
   15088                     float maxContentLightLevel_ = 0,
   15089                     float maxFrameAverageLightLevel_ = 0 )
   15090       : displayPrimaryRed( displayPrimaryRed_ )
   15091       , displayPrimaryGreen( displayPrimaryGreen_ )
   15092       , displayPrimaryBlue( displayPrimaryBlue_ )
   15093       , whitePoint( whitePoint_ )
   15094       , maxLuminance( maxLuminance_ )
   15095       , minLuminance( minLuminance_ )
   15096       , maxContentLightLevel( maxContentLightLevel_ )
   15097       , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
   15098     {
   15099     }
   15100 
   15101     HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
   15102     {
   15103       memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
   15104     }
   15105 
   15106     HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
   15107     {
   15108       memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
   15109       return *this;
   15110     }
   15111     HdrMetadataEXT& setPNext( const void* pNext_ )
   15112     {
   15113       pNext = pNext_;
   15114       return *this;
   15115     }
   15116 
   15117     HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
   15118     {
   15119       displayPrimaryRed = displayPrimaryRed_;
   15120       return *this;
   15121     }
   15122 
   15123     HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
   15124     {
   15125       displayPrimaryGreen = displayPrimaryGreen_;
   15126       return *this;
   15127     }
   15128 
   15129     HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
   15130     {
   15131       displayPrimaryBlue = displayPrimaryBlue_;
   15132       return *this;
   15133     }
   15134 
   15135     HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
   15136     {
   15137       whitePoint = whitePoint_;
   15138       return *this;
   15139     }
   15140 
   15141     HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
   15142     {
   15143       maxLuminance = maxLuminance_;
   15144       return *this;
   15145     }
   15146 
   15147     HdrMetadataEXT& setMinLuminance( float minLuminance_ )
   15148     {
   15149       minLuminance = minLuminance_;
   15150       return *this;
   15151     }
   15152 
   15153     HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
   15154     {
   15155       maxContentLightLevel = maxContentLightLevel_;
   15156       return *this;
   15157     }
   15158 
   15159     HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
   15160     {
   15161       maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
   15162       return *this;
   15163     }
   15164 
   15165     operator VkHdrMetadataEXT const&() const
   15166     {
   15167       return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
   15168     }
   15169 
   15170     operator VkHdrMetadataEXT &()
   15171     {
   15172       return *reinterpret_cast<VkHdrMetadataEXT*>(this);
   15173     }
   15174 
   15175     bool operator==( HdrMetadataEXT const& rhs ) const
   15176     {
   15177       return ( sType == rhs.sType )
   15178           && ( pNext == rhs.pNext )
   15179           && ( displayPrimaryRed == rhs.displayPrimaryRed )
   15180           && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
   15181           && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
   15182           && ( whitePoint == rhs.whitePoint )
   15183           && ( maxLuminance == rhs.maxLuminance )
   15184           && ( minLuminance == rhs.minLuminance )
   15185           && ( maxContentLightLevel == rhs.maxContentLightLevel )
   15186           && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
   15187     }
   15188 
   15189     bool operator!=( HdrMetadataEXT const& rhs ) const
   15190     {
   15191       return !operator==( rhs );
   15192     }
   15193 
   15194   private:
   15195     StructureType sType = StructureType::eHdrMetadataEXT;
   15196 
   15197   public:
   15198     const void* pNext = nullptr;
   15199     XYColorEXT displayPrimaryRed;
   15200     XYColorEXT displayPrimaryGreen;
   15201     XYColorEXT displayPrimaryBlue;
   15202     XYColorEXT whitePoint;
   15203     float maxLuminance;
   15204     float minLuminance;
   15205     float maxContentLightLevel;
   15206     float maxFrameAverageLightLevel;
   15207   };
   15208   static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
   15209 
   15210   struct PresentTimesInfoGOOGLE
   15211   {
   15212     PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0,
   15213                             const PresentTimeGOOGLE* pTimes_ = nullptr )
   15214       : swapchainCount( swapchainCount_ )
   15215       , pTimes( pTimes_ )
   15216     {
   15217     }
   15218 
   15219     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
   15220     {
   15221       memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
   15222     }
   15223 
   15224     PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
   15225     {
   15226       memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
   15227       return *this;
   15228     }
   15229     PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
   15230     {
   15231       pNext = pNext_;
   15232       return *this;
   15233     }
   15234 
   15235     PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
   15236     {
   15237       swapchainCount = swapchainCount_;
   15238       return *this;
   15239     }
   15240 
   15241     PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
   15242     {
   15243       pTimes = pTimes_;
   15244       return *this;
   15245     }
   15246 
   15247     operator VkPresentTimesInfoGOOGLE const&() const
   15248     {
   15249       return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
   15250     }
   15251 
   15252     operator VkPresentTimesInfoGOOGLE &()
   15253     {
   15254       return *reinterpret_cast<VkPresentTimesInfoGOOGLE*>(this);
   15255     }
   15256 
   15257     bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
   15258     {
   15259       return ( sType == rhs.sType )
   15260           && ( pNext == rhs.pNext )
   15261           && ( swapchainCount == rhs.swapchainCount )
   15262           && ( pTimes == rhs.pTimes );
   15263     }
   15264 
   15265     bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
   15266     {
   15267       return !operator==( rhs );
   15268     }
   15269 
   15270   private:
   15271     StructureType sType = StructureType::ePresentTimesInfoGOOGLE;
   15272 
   15273   public:
   15274     const void* pNext = nullptr;
   15275     uint32_t swapchainCount;
   15276     const PresentTimeGOOGLE* pTimes;
   15277   };
   15278   static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
   15279 
   15280 #ifdef VK_USE_PLATFORM_IOS_MVK
   15281   struct IOSSurfaceCreateInfoMVK
   15282   {
   15283     IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(),
   15284                              const void* pView_ = nullptr )
   15285       : flags( flags_ )
   15286       , pView( pView_ )
   15287     {
   15288     }
   15289 
   15290     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
   15291     {
   15292       memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
   15293     }
   15294 
   15295     IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
   15296     {
   15297       memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
   15298       return *this;
   15299     }
   15300     IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
   15301     {
   15302       pNext = pNext_;
   15303       return *this;
   15304     }
   15305 
   15306     IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
   15307     {
   15308       flags = flags_;
   15309       return *this;
   15310     }
   15311 
   15312     IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
   15313     {
   15314       pView = pView_;
   15315       return *this;
   15316     }
   15317 
   15318     operator VkIOSSurfaceCreateInfoMVK const&() const
   15319     {
   15320       return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
   15321     }
   15322 
   15323     operator VkIOSSurfaceCreateInfoMVK &()
   15324     {
   15325       return *reinterpret_cast<VkIOSSurfaceCreateInfoMVK*>(this);
   15326     }
   15327 
   15328     bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
   15329     {
   15330       return ( sType == rhs.sType )
   15331           && ( pNext == rhs.pNext )
   15332           && ( flags == rhs.flags )
   15333           && ( pView == rhs.pView );
   15334     }
   15335 
   15336     bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
   15337     {
   15338       return !operator==( rhs );
   15339     }
   15340 
   15341   private:
   15342     StructureType sType = StructureType::eIosSurfaceCreateInfoMVK;
   15343 
   15344   public:
   15345     const void* pNext = nullptr;
   15346     IOSSurfaceCreateFlagsMVK flags;
   15347     const void* pView;
   15348   };
   15349   static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
   15350 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   15351 
   15352 #ifdef VK_USE_PLATFORM_MACOS_MVK
   15353   struct MacOSSurfaceCreateInfoMVK
   15354   {
   15355     MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(),
   15356                                const void* pView_ = nullptr )
   15357       : flags( flags_ )
   15358       , pView( pView_ )
   15359     {
   15360     }
   15361 
   15362     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
   15363     {
   15364       memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
   15365     }
   15366 
   15367     MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
   15368     {
   15369       memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
   15370       return *this;
   15371     }
   15372     MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
   15373     {
   15374       pNext = pNext_;
   15375       return *this;
   15376     }
   15377 
   15378     MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
   15379     {
   15380       flags = flags_;
   15381       return *this;
   15382     }
   15383 
   15384     MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
   15385     {
   15386       pView = pView_;
   15387       return *this;
   15388     }
   15389 
   15390     operator VkMacOSSurfaceCreateInfoMVK const&() const
   15391     {
   15392       return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
   15393     }
   15394 
   15395     operator VkMacOSSurfaceCreateInfoMVK &()
   15396     {
   15397       return *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK*>(this);
   15398     }
   15399 
   15400     bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
   15401     {
   15402       return ( sType == rhs.sType )
   15403           && ( pNext == rhs.pNext )
   15404           && ( flags == rhs.flags )
   15405           && ( pView == rhs.pView );
   15406     }
   15407 
   15408     bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
   15409     {
   15410       return !operator==( rhs );
   15411     }
   15412 
   15413   private:
   15414     StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK;
   15415 
   15416   public:
   15417     const void* pNext = nullptr;
   15418     MacOSSurfaceCreateFlagsMVK flags;
   15419     const void* pView;
   15420   };
   15421   static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
   15422 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   15423 
   15424   struct PipelineViewportWScalingStateCreateInfoNV
   15425   {
   15426     PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0,
   15427                                                uint32_t viewportCount_ = 0,
   15428                                                const ViewportWScalingNV* pViewportWScalings_ = nullptr )
   15429       : viewportWScalingEnable( viewportWScalingEnable_ )
   15430       , viewportCount( viewportCount_ )
   15431       , pViewportWScalings( pViewportWScalings_ )
   15432     {
   15433     }
   15434 
   15435     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
   15436     {
   15437       memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
   15438     }
   15439 
   15440     PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
   15441     {
   15442       memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
   15443       return *this;
   15444     }
   15445     PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
   15446     {
   15447       pNext = pNext_;
   15448       return *this;
   15449     }
   15450 
   15451     PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
   15452     {
   15453       viewportWScalingEnable = viewportWScalingEnable_;
   15454       return *this;
   15455     }
   15456 
   15457     PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
   15458     {
   15459       viewportCount = viewportCount_;
   15460       return *this;
   15461     }
   15462 
   15463     PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
   15464     {
   15465       pViewportWScalings = pViewportWScalings_;
   15466       return *this;
   15467     }
   15468 
   15469     operator VkPipelineViewportWScalingStateCreateInfoNV const&() const
   15470     {
   15471       return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
   15472     }
   15473 
   15474     operator VkPipelineViewportWScalingStateCreateInfoNV &()
   15475     {
   15476       return *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV*>(this);
   15477     }
   15478 
   15479     bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
   15480     {
   15481       return ( sType == rhs.sType )
   15482           && ( pNext == rhs.pNext )
   15483           && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
   15484           && ( viewportCount == rhs.viewportCount )
   15485           && ( pViewportWScalings == rhs.pViewportWScalings );
   15486     }
   15487 
   15488     bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
   15489     {
   15490       return !operator==( rhs );
   15491     }
   15492 
   15493   private:
   15494     StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
   15495 
   15496   public:
   15497     const void* pNext = nullptr;
   15498     Bool32 viewportWScalingEnable;
   15499     uint32_t viewportCount;
   15500     const ViewportWScalingNV* pViewportWScalings;
   15501   };
   15502   static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
   15503 
   15504   struct PhysicalDeviceDiscardRectanglePropertiesEXT
   15505   {
   15506     PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
   15507       : maxDiscardRectangles( maxDiscardRectangles_ )
   15508     {
   15509     }
   15510 
   15511     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
   15512     {
   15513       memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
   15514     }
   15515 
   15516     PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
   15517     {
   15518       memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
   15519       return *this;
   15520     }
   15521     PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
   15522     {
   15523       pNext = pNext_;
   15524       return *this;
   15525     }
   15526 
   15527     PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
   15528     {
   15529       maxDiscardRectangles = maxDiscardRectangles_;
   15530       return *this;
   15531     }
   15532 
   15533     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&() const
   15534     {
   15535       return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
   15536     }
   15537 
   15538     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &()
   15539     {
   15540       return *reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
   15541     }
   15542 
   15543     bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
   15544     {
   15545       return ( sType == rhs.sType )
   15546           && ( pNext == rhs.pNext )
   15547           && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
   15548     }
   15549 
   15550     bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
   15551     {
   15552       return !operator==( rhs );
   15553     }
   15554 
   15555   private:
   15556     StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
   15557 
   15558   public:
   15559     void* pNext = nullptr;
   15560     uint32_t maxDiscardRectangles;
   15561   };
   15562   static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
   15563 
   15564   struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
   15565   {
   15566     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&() const
   15567     {
   15568       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
   15569     }
   15570 
   15571     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &()
   15572     {
   15573       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
   15574     }
   15575 
   15576     bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
   15577     {
   15578       return ( sType == rhs.sType )
   15579           && ( pNext == rhs.pNext )
   15580           && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
   15581     }
   15582 
   15583     bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
   15584     {
   15585       return !operator==( rhs );
   15586     }
   15587 
   15588   private:
   15589     StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
   15590 
   15591   public:
   15592     void* pNext = nullptr;
   15593     Bool32 perViewPositionAllComponents;
   15594   };
   15595   static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
   15596 
   15597   struct PhysicalDeviceSurfaceInfo2KHR
   15598   {
   15599     PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
   15600       : surface( surface_ )
   15601     {
   15602     }
   15603 
   15604     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
   15605     {
   15606       memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
   15607     }
   15608 
   15609     PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
   15610     {
   15611       memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
   15612       return *this;
   15613     }
   15614     PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
   15615     {
   15616       pNext = pNext_;
   15617       return *this;
   15618     }
   15619 
   15620     PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
   15621     {
   15622       surface = surface_;
   15623       return *this;
   15624     }
   15625 
   15626     operator VkPhysicalDeviceSurfaceInfo2KHR const&() const
   15627     {
   15628       return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
   15629     }
   15630 
   15631     operator VkPhysicalDeviceSurfaceInfo2KHR &()
   15632     {
   15633       return *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR*>(this);
   15634     }
   15635 
   15636     bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
   15637     {
   15638       return ( sType == rhs.sType )
   15639           && ( pNext == rhs.pNext )
   15640           && ( surface == rhs.surface );
   15641     }
   15642 
   15643     bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
   15644     {
   15645       return !operator==( rhs );
   15646     }
   15647 
   15648   private:
   15649     StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
   15650 
   15651   public:
   15652     const void* pNext = nullptr;
   15653     SurfaceKHR surface;
   15654   };
   15655   static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
   15656 
   15657   struct DisplayPlaneProperties2KHR
   15658   {
   15659     operator VkDisplayPlaneProperties2KHR const&() const
   15660     {
   15661       return *reinterpret_cast<const VkDisplayPlaneProperties2KHR*>(this);
   15662     }
   15663 
   15664     operator VkDisplayPlaneProperties2KHR &()
   15665     {
   15666       return *reinterpret_cast<VkDisplayPlaneProperties2KHR*>(this);
   15667     }
   15668 
   15669     bool operator==( DisplayPlaneProperties2KHR const& rhs ) const
   15670     {
   15671       return ( sType == rhs.sType )
   15672           && ( pNext == rhs.pNext )
   15673           && ( displayPlaneProperties == rhs.displayPlaneProperties );
   15674     }
   15675 
   15676     bool operator!=( DisplayPlaneProperties2KHR const& rhs ) const
   15677     {
   15678       return !operator==( rhs );
   15679     }
   15680 
   15681   private:
   15682     StructureType sType = StructureType::eDisplayPlaneProperties2KHR;
   15683 
   15684   public:
   15685     void* pNext = nullptr;
   15686     DisplayPlanePropertiesKHR displayPlaneProperties;
   15687   };
   15688   static_assert( sizeof( DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), "struct and wrapper have different size!" );
   15689 
   15690   struct DisplayModeProperties2KHR
   15691   {
   15692     operator VkDisplayModeProperties2KHR const&() const
   15693     {
   15694       return *reinterpret_cast<const VkDisplayModeProperties2KHR*>(this);
   15695     }
   15696 
   15697     operator VkDisplayModeProperties2KHR &()
   15698     {
   15699       return *reinterpret_cast<VkDisplayModeProperties2KHR*>(this);
   15700     }
   15701 
   15702     bool operator==( DisplayModeProperties2KHR const& rhs ) const
   15703     {
   15704       return ( sType == rhs.sType )
   15705           && ( pNext == rhs.pNext )
   15706           && ( displayModeProperties == rhs.displayModeProperties );
   15707     }
   15708 
   15709     bool operator!=( DisplayModeProperties2KHR const& rhs ) const
   15710     {
   15711       return !operator==( rhs );
   15712     }
   15713 
   15714   private:
   15715     StructureType sType = StructureType::eDisplayModeProperties2KHR;
   15716 
   15717   public:
   15718     void* pNext = nullptr;
   15719     DisplayModePropertiesKHR displayModeProperties;
   15720   };
   15721   static_assert( sizeof( DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), "struct and wrapper have different size!" );
   15722 
   15723   struct DisplayPlaneInfo2KHR
   15724   {
   15725     DisplayPlaneInfo2KHR( DisplayModeKHR mode_ = DisplayModeKHR(),
   15726                           uint32_t planeIndex_ = 0 )
   15727       : mode( mode_ )
   15728       , planeIndex( planeIndex_ )
   15729     {
   15730     }
   15731 
   15732     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs )
   15733     {
   15734       memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
   15735     }
   15736 
   15737     DisplayPlaneInfo2KHR& operator=( VkDisplayPlaneInfo2KHR const & rhs )
   15738     {
   15739       memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
   15740       return *this;
   15741     }
   15742     DisplayPlaneInfo2KHR& setPNext( const void* pNext_ )
   15743     {
   15744       pNext = pNext_;
   15745       return *this;
   15746     }
   15747 
   15748     DisplayPlaneInfo2KHR& setMode( DisplayModeKHR mode_ )
   15749     {
   15750       mode = mode_;
   15751       return *this;
   15752     }
   15753 
   15754     DisplayPlaneInfo2KHR& setPlaneIndex( uint32_t planeIndex_ )
   15755     {
   15756       planeIndex = planeIndex_;
   15757       return *this;
   15758     }
   15759 
   15760     operator VkDisplayPlaneInfo2KHR const&() const
   15761     {
   15762       return *reinterpret_cast<const VkDisplayPlaneInfo2KHR*>(this);
   15763     }
   15764 
   15765     operator VkDisplayPlaneInfo2KHR &()
   15766     {
   15767       return *reinterpret_cast<VkDisplayPlaneInfo2KHR*>(this);
   15768     }
   15769 
   15770     bool operator==( DisplayPlaneInfo2KHR const& rhs ) const
   15771     {
   15772       return ( sType == rhs.sType )
   15773           && ( pNext == rhs.pNext )
   15774           && ( mode == rhs.mode )
   15775           && ( planeIndex == rhs.planeIndex );
   15776     }
   15777 
   15778     bool operator!=( DisplayPlaneInfo2KHR const& rhs ) const
   15779     {
   15780       return !operator==( rhs );
   15781     }
   15782 
   15783   private:
   15784     StructureType sType = StructureType::eDisplayPlaneInfo2KHR;
   15785 
   15786   public:
   15787     const void* pNext = nullptr;
   15788     DisplayModeKHR mode;
   15789     uint32_t planeIndex;
   15790   };
   15791   static_assert( sizeof( DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "struct and wrapper have different size!" );
   15792 
   15793   struct PhysicalDevice16BitStorageFeatures
   15794   {
   15795     PhysicalDevice16BitStorageFeatures( Bool32 storageBuffer16BitAccess_ = 0,
   15796                                         Bool32 uniformAndStorageBuffer16BitAccess_ = 0,
   15797                                         Bool32 storagePushConstant16_ = 0,
   15798                                         Bool32 storageInputOutput16_ = 0 )
   15799       : storageBuffer16BitAccess( storageBuffer16BitAccess_ )
   15800       , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
   15801       , storagePushConstant16( storagePushConstant16_ )
   15802       , storageInputOutput16( storageInputOutput16_ )
   15803     {
   15804     }
   15805 
   15806     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs )
   15807     {
   15808       memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
   15809     }
   15810 
   15811     PhysicalDevice16BitStorageFeatures& operator=( VkPhysicalDevice16BitStorageFeatures const & rhs )
   15812     {
   15813       memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
   15814       return *this;
   15815     }
   15816     PhysicalDevice16BitStorageFeatures& setPNext( void* pNext_ )
   15817     {
   15818       pNext = pNext_;
   15819       return *this;
   15820     }
   15821 
   15822     PhysicalDevice16BitStorageFeatures& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
   15823     {
   15824       storageBuffer16BitAccess = storageBuffer16BitAccess_;
   15825       return *this;
   15826     }
   15827 
   15828     PhysicalDevice16BitStorageFeatures& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
   15829     {
   15830       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
   15831       return *this;
   15832     }
   15833 
   15834     PhysicalDevice16BitStorageFeatures& setStoragePushConstant16( Bool32 storagePushConstant16_ )
   15835     {
   15836       storagePushConstant16 = storagePushConstant16_;
   15837       return *this;
   15838     }
   15839 
   15840     PhysicalDevice16BitStorageFeatures& setStorageInputOutput16( Bool32 storageInputOutput16_ )
   15841     {
   15842       storageInputOutput16 = storageInputOutput16_;
   15843       return *this;
   15844     }
   15845 
   15846     operator VkPhysicalDevice16BitStorageFeatures const&() const
   15847     {
   15848       return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(this);
   15849     }
   15850 
   15851     operator VkPhysicalDevice16BitStorageFeatures &()
   15852     {
   15853       return *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(this);
   15854     }
   15855 
   15856     bool operator==( PhysicalDevice16BitStorageFeatures const& rhs ) const
   15857     {
   15858       return ( sType == rhs.sType )
   15859           && ( pNext == rhs.pNext )
   15860           && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
   15861           && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
   15862           && ( storagePushConstant16 == rhs.storagePushConstant16 )
   15863           && ( storageInputOutput16 == rhs.storageInputOutput16 );
   15864     }
   15865 
   15866     bool operator!=( PhysicalDevice16BitStorageFeatures const& rhs ) const
   15867     {
   15868       return !operator==( rhs );
   15869     }
   15870 
   15871   private:
   15872     StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures;
   15873 
   15874   public:
   15875     void* pNext = nullptr;
   15876     Bool32 storageBuffer16BitAccess;
   15877     Bool32 uniformAndStorageBuffer16BitAccess;
   15878     Bool32 storagePushConstant16;
   15879     Bool32 storageInputOutput16;
   15880   };
   15881   static_assert( sizeof( PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), "struct and wrapper have different size!" );
   15882 
   15883   using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
   15884 
   15885   struct BufferMemoryRequirementsInfo2
   15886   {
   15887     BufferMemoryRequirementsInfo2( Buffer buffer_ = Buffer() )
   15888       : buffer( buffer_ )
   15889     {
   15890     }
   15891 
   15892     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs )
   15893     {
   15894       memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
   15895     }
   15896 
   15897     BufferMemoryRequirementsInfo2& operator=( VkBufferMemoryRequirementsInfo2 const & rhs )
   15898     {
   15899       memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
   15900       return *this;
   15901     }
   15902     BufferMemoryRequirementsInfo2& setPNext( const void* pNext_ )
   15903     {
   15904       pNext = pNext_;
   15905       return *this;
   15906     }
   15907 
   15908     BufferMemoryRequirementsInfo2& setBuffer( Buffer buffer_ )
   15909     {
   15910       buffer = buffer_;
   15911       return *this;
   15912     }
   15913 
   15914     operator VkBufferMemoryRequirementsInfo2 const&() const
   15915     {
   15916       return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>(this);
   15917     }
   15918 
   15919     operator VkBufferMemoryRequirementsInfo2 &()
   15920     {
   15921       return *reinterpret_cast<VkBufferMemoryRequirementsInfo2*>(this);
   15922     }
   15923 
   15924     bool operator==( BufferMemoryRequirementsInfo2 const& rhs ) const
   15925     {
   15926       return ( sType == rhs.sType )
   15927           && ( pNext == rhs.pNext )
   15928           && ( buffer == rhs.buffer );
   15929     }
   15930 
   15931     bool operator!=( BufferMemoryRequirementsInfo2 const& rhs ) const
   15932     {
   15933       return !operator==( rhs );
   15934     }
   15935 
   15936   private:
   15937     StructureType sType = StructureType::eBufferMemoryRequirementsInfo2;
   15938 
   15939   public:
   15940     const void* pNext = nullptr;
   15941     Buffer buffer;
   15942   };
   15943   static_assert( sizeof( BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
   15944 
   15945   using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
   15946 
   15947   struct ImageMemoryRequirementsInfo2
   15948   {
   15949     ImageMemoryRequirementsInfo2( Image image_ = Image() )
   15950       : image( image_ )
   15951     {
   15952     }
   15953 
   15954     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs )
   15955     {
   15956       memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
   15957     }
   15958 
   15959     ImageMemoryRequirementsInfo2& operator=( VkImageMemoryRequirementsInfo2 const & rhs )
   15960     {
   15961       memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
   15962       return *this;
   15963     }
   15964     ImageMemoryRequirementsInfo2& setPNext( const void* pNext_ )
   15965     {
   15966       pNext = pNext_;
   15967       return *this;
   15968     }
   15969 
   15970     ImageMemoryRequirementsInfo2& setImage( Image image_ )
   15971     {
   15972       image = image_;
   15973       return *this;
   15974     }
   15975 
   15976     operator VkImageMemoryRequirementsInfo2 const&() const
   15977     {
   15978       return *reinterpret_cast<const VkImageMemoryRequirementsInfo2*>(this);
   15979     }
   15980 
   15981     operator VkImageMemoryRequirementsInfo2 &()
   15982     {
   15983       return *reinterpret_cast<VkImageMemoryRequirementsInfo2*>(this);
   15984     }
   15985 
   15986     bool operator==( ImageMemoryRequirementsInfo2 const& rhs ) const
   15987     {
   15988       return ( sType == rhs.sType )
   15989           && ( pNext == rhs.pNext )
   15990           && ( image == rhs.image );
   15991     }
   15992 
   15993     bool operator!=( ImageMemoryRequirementsInfo2 const& rhs ) const
   15994     {
   15995       return !operator==( rhs );
   15996     }
   15997 
   15998   private:
   15999     StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
   16000 
   16001   public:
   16002     const void* pNext = nullptr;
   16003     Image image;
   16004   };
   16005   static_assert( sizeof( ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
   16006 
   16007   using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
   16008 
   16009   struct ImageSparseMemoryRequirementsInfo2
   16010   {
   16011     ImageSparseMemoryRequirementsInfo2( Image image_ = Image() )
   16012       : image( image_ )
   16013     {
   16014     }
   16015 
   16016     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs )
   16017     {
   16018       memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
   16019     }
   16020 
   16021     ImageSparseMemoryRequirementsInfo2& operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs )
   16022     {
   16023       memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
   16024       return *this;
   16025     }
   16026     ImageSparseMemoryRequirementsInfo2& setPNext( const void* pNext_ )
   16027     {
   16028       pNext = pNext_;
   16029       return *this;
   16030     }
   16031 
   16032     ImageSparseMemoryRequirementsInfo2& setImage( Image image_ )
   16033     {
   16034       image = image_;
   16035       return *this;
   16036     }
   16037 
   16038     operator VkImageSparseMemoryRequirementsInfo2 const&() const
   16039     {
   16040       return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>(this);
   16041     }
   16042 
   16043     operator VkImageSparseMemoryRequirementsInfo2 &()
   16044     {
   16045       return *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2*>(this);
   16046     }
   16047 
   16048     bool operator==( ImageSparseMemoryRequirementsInfo2 const& rhs ) const
   16049     {
   16050       return ( sType == rhs.sType )
   16051           && ( pNext == rhs.pNext )
   16052           && ( image == rhs.image );
   16053     }
   16054 
   16055     bool operator!=( ImageSparseMemoryRequirementsInfo2 const& rhs ) const
   16056     {
   16057       return !operator==( rhs );
   16058     }
   16059 
   16060   private:
   16061     StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
   16062 
   16063   public:
   16064     const void* pNext = nullptr;
   16065     Image image;
   16066   };
   16067   static_assert( sizeof( ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
   16068 
   16069   using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
   16070 
   16071   struct MemoryRequirements2
   16072   {
   16073     operator VkMemoryRequirements2 const&() const
   16074     {
   16075       return *reinterpret_cast<const VkMemoryRequirements2*>(this);
   16076     }
   16077 
   16078     operator VkMemoryRequirements2 &()
   16079     {
   16080       return *reinterpret_cast<VkMemoryRequirements2*>(this);
   16081     }
   16082 
   16083     bool operator==( MemoryRequirements2 const& rhs ) const
   16084     {
   16085       return ( sType == rhs.sType )
   16086           && ( pNext == rhs.pNext )
   16087           && ( memoryRequirements == rhs.memoryRequirements );
   16088     }
   16089 
   16090     bool operator!=( MemoryRequirements2 const& rhs ) const
   16091     {
   16092       return !operator==( rhs );
   16093     }
   16094 
   16095   private:
   16096     StructureType sType = StructureType::eMemoryRequirements2;
   16097 
   16098   public:
   16099     void* pNext = nullptr;
   16100     MemoryRequirements memoryRequirements;
   16101   };
   16102   static_assert( sizeof( MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "struct and wrapper have different size!" );
   16103 
   16104   using MemoryRequirements2KHR = MemoryRequirements2;
   16105 
   16106   struct MemoryDedicatedRequirements
   16107   {
   16108     operator VkMemoryDedicatedRequirements const&() const
   16109     {
   16110       return *reinterpret_cast<const VkMemoryDedicatedRequirements*>(this);
   16111     }
   16112 
   16113     operator VkMemoryDedicatedRequirements &()
   16114     {
   16115       return *reinterpret_cast<VkMemoryDedicatedRequirements*>(this);
   16116     }
   16117 
   16118     bool operator==( MemoryDedicatedRequirements const& rhs ) const
   16119     {
   16120       return ( sType == rhs.sType )
   16121           && ( pNext == rhs.pNext )
   16122           && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
   16123           && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
   16124     }
   16125 
   16126     bool operator!=( MemoryDedicatedRequirements const& rhs ) const
   16127     {
   16128       return !operator==( rhs );
   16129     }
   16130 
   16131   private:
   16132     StructureType sType = StructureType::eMemoryDedicatedRequirements;
   16133 
   16134   public:
   16135     void* pNext = nullptr;
   16136     Bool32 prefersDedicatedAllocation;
   16137     Bool32 requiresDedicatedAllocation;
   16138   };
   16139   static_assert( sizeof( MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), "struct and wrapper have different size!" );
   16140 
   16141   using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
   16142 
   16143   struct MemoryDedicatedAllocateInfo
   16144   {
   16145     MemoryDedicatedAllocateInfo( Image image_ = Image(),
   16146                                  Buffer buffer_ = Buffer() )
   16147       : image( image_ )
   16148       , buffer( buffer_ )
   16149     {
   16150     }
   16151 
   16152     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs )
   16153     {
   16154       memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
   16155     }
   16156 
   16157     MemoryDedicatedAllocateInfo& operator=( VkMemoryDedicatedAllocateInfo const & rhs )
   16158     {
   16159       memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
   16160       return *this;
   16161     }
   16162     MemoryDedicatedAllocateInfo& setPNext( const void* pNext_ )
   16163     {
   16164       pNext = pNext_;
   16165       return *this;
   16166     }
   16167 
   16168     MemoryDedicatedAllocateInfo& setImage( Image image_ )
   16169     {
   16170       image = image_;
   16171       return *this;
   16172     }
   16173 
   16174     MemoryDedicatedAllocateInfo& setBuffer( Buffer buffer_ )
   16175     {
   16176       buffer = buffer_;
   16177       return *this;
   16178     }
   16179 
   16180     operator VkMemoryDedicatedAllocateInfo const&() const
   16181     {
   16182       return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>(this);
   16183     }
   16184 
   16185     operator VkMemoryDedicatedAllocateInfo &()
   16186     {
   16187       return *reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(this);
   16188     }
   16189 
   16190     bool operator==( MemoryDedicatedAllocateInfo const& rhs ) const
   16191     {
   16192       return ( sType == rhs.sType )
   16193           && ( pNext == rhs.pNext )
   16194           && ( image == rhs.image )
   16195           && ( buffer == rhs.buffer );
   16196     }
   16197 
   16198     bool operator!=( MemoryDedicatedAllocateInfo const& rhs ) const
   16199     {
   16200       return !operator==( rhs );
   16201     }
   16202 
   16203   private:
   16204     StructureType sType = StructureType::eMemoryDedicatedAllocateInfo;
   16205 
   16206   public:
   16207     const void* pNext = nullptr;
   16208     Image image;
   16209     Buffer buffer;
   16210   };
   16211   static_assert( sizeof( MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), "struct and wrapper have different size!" );
   16212 
   16213   using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
   16214 
   16215   struct SamplerYcbcrConversionInfo
   16216   {
   16217     SamplerYcbcrConversionInfo( SamplerYcbcrConversion conversion_ = SamplerYcbcrConversion() )
   16218       : conversion( conversion_ )
   16219     {
   16220     }
   16221 
   16222     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs )
   16223     {
   16224       memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
   16225     }
   16226 
   16227     SamplerYcbcrConversionInfo& operator=( VkSamplerYcbcrConversionInfo const & rhs )
   16228     {
   16229       memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
   16230       return *this;
   16231     }
   16232     SamplerYcbcrConversionInfo& setPNext( const void* pNext_ )
   16233     {
   16234       pNext = pNext_;
   16235       return *this;
   16236     }
   16237 
   16238     SamplerYcbcrConversionInfo& setConversion( SamplerYcbcrConversion conversion_ )
   16239     {
   16240       conversion = conversion_;
   16241       return *this;
   16242     }
   16243 
   16244     operator VkSamplerYcbcrConversionInfo const&() const
   16245     {
   16246       return *reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(this);
   16247     }
   16248 
   16249     operator VkSamplerYcbcrConversionInfo &()
   16250     {
   16251       return *reinterpret_cast<VkSamplerYcbcrConversionInfo*>(this);
   16252     }
   16253 
   16254     bool operator==( SamplerYcbcrConversionInfo const& rhs ) const
   16255     {
   16256       return ( sType == rhs.sType )
   16257           && ( pNext == rhs.pNext )
   16258           && ( conversion == rhs.conversion );
   16259     }
   16260 
   16261     bool operator!=( SamplerYcbcrConversionInfo const& rhs ) const
   16262     {
   16263       return !operator==( rhs );
   16264     }
   16265 
   16266   private:
   16267     StructureType sType = StructureType::eSamplerYcbcrConversionInfo;
   16268 
   16269   public:
   16270     const void* pNext = nullptr;
   16271     SamplerYcbcrConversion conversion;
   16272   };
   16273   static_assert( sizeof( SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), "struct and wrapper have different size!" );
   16274 
   16275   using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
   16276 
   16277   struct PhysicalDeviceSamplerYcbcrConversionFeatures
   16278   {
   16279     PhysicalDeviceSamplerYcbcrConversionFeatures( Bool32 samplerYcbcrConversion_ = 0 )
   16280       : samplerYcbcrConversion( samplerYcbcrConversion_ )
   16281     {
   16282     }
   16283 
   16284     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
   16285     {
   16286       memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
   16287     }
   16288 
   16289     PhysicalDeviceSamplerYcbcrConversionFeatures& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
   16290     {
   16291       memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
   16292       return *this;
   16293     }
   16294     PhysicalDeviceSamplerYcbcrConversionFeatures& setPNext( void* pNext_ )
   16295     {
   16296       pNext = pNext_;
   16297       return *this;
   16298     }
   16299 
   16300     PhysicalDeviceSamplerYcbcrConversionFeatures& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
   16301     {
   16302       samplerYcbcrConversion = samplerYcbcrConversion_;
   16303       return *this;
   16304     }
   16305 
   16306     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&() const
   16307     {
   16308       return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(this);
   16309     }
   16310 
   16311     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &()
   16312     {
   16313       return *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(this);
   16314     }
   16315 
   16316     bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const
   16317     {
   16318       return ( sType == rhs.sType )
   16319           && ( pNext == rhs.pNext )
   16320           && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
   16321     }
   16322 
   16323     bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const
   16324     {
   16325       return !operator==( rhs );
   16326     }
   16327 
   16328   private:
   16329     StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
   16330 
   16331   public:
   16332     void* pNext = nullptr;
   16333     Bool32 samplerYcbcrConversion;
   16334   };
   16335   static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), "struct and wrapper have different size!" );
   16336 
   16337   using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
   16338 
   16339   struct SamplerYcbcrConversionImageFormatProperties
   16340   {
   16341     operator VkSamplerYcbcrConversionImageFormatProperties const&() const
   16342     {
   16343       return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>(this);
   16344     }
   16345 
   16346     operator VkSamplerYcbcrConversionImageFormatProperties &()
   16347     {
   16348       return *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(this);
   16349     }
   16350 
   16351     bool operator==( SamplerYcbcrConversionImageFormatProperties const& rhs ) const
   16352     {
   16353       return ( sType == rhs.sType )
   16354           && ( pNext == rhs.pNext )
   16355           && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
   16356     }
   16357 
   16358     bool operator!=( SamplerYcbcrConversionImageFormatProperties const& rhs ) const
   16359     {
   16360       return !operator==( rhs );
   16361     }
   16362 
   16363   private:
   16364     StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
   16365 
   16366   public:
   16367     void* pNext = nullptr;
   16368     uint32_t combinedImageSamplerDescriptorCount;
   16369   };
   16370   static_assert( sizeof( SamplerYcbcrConversionImageFormatProperties ) == sizeof( VkSamplerYcbcrConversionImageFormatProperties ), "struct and wrapper have different size!" );
   16371 
   16372   using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
   16373 
   16374   struct TextureLODGatherFormatPropertiesAMD
   16375   {
   16376     operator VkTextureLODGatherFormatPropertiesAMD const&() const
   16377     {
   16378       return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
   16379     }
   16380 
   16381     operator VkTextureLODGatherFormatPropertiesAMD &()
   16382     {
   16383       return *reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD*>(this);
   16384     }
   16385 
   16386     bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
   16387     {
   16388       return ( sType == rhs.sType )
   16389           && ( pNext == rhs.pNext )
   16390           && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
   16391     }
   16392 
   16393     bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
   16394     {
   16395       return !operator==( rhs );
   16396     }
   16397 
   16398   private:
   16399     StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
   16400 
   16401   public:
   16402     void* pNext = nullptr;
   16403     Bool32 supportsTextureGatherLODBiasAMD;
   16404   };
   16405   static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
   16406 
   16407   struct ProtectedSubmitInfo
   16408   {
   16409     ProtectedSubmitInfo( Bool32 protectedSubmit_ = 0 )
   16410       : protectedSubmit( protectedSubmit_ )
   16411     {
   16412     }
   16413 
   16414     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs )
   16415     {
   16416       memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
   16417     }
   16418 
   16419     ProtectedSubmitInfo& operator=( VkProtectedSubmitInfo const & rhs )
   16420     {
   16421       memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
   16422       return *this;
   16423     }
   16424     ProtectedSubmitInfo& setPNext( const void* pNext_ )
   16425     {
   16426       pNext = pNext_;
   16427       return *this;
   16428     }
   16429 
   16430     ProtectedSubmitInfo& setProtectedSubmit( Bool32 protectedSubmit_ )
   16431     {
   16432       protectedSubmit = protectedSubmit_;
   16433       return *this;
   16434     }
   16435 
   16436     operator VkProtectedSubmitInfo const&() const
   16437     {
   16438       return *reinterpret_cast<const VkProtectedSubmitInfo*>(this);
   16439     }
   16440 
   16441     operator VkProtectedSubmitInfo &()
   16442     {
   16443       return *reinterpret_cast<VkProtectedSubmitInfo*>(this);
   16444     }
   16445 
   16446     bool operator==( ProtectedSubmitInfo const& rhs ) const
   16447     {
   16448       return ( sType == rhs.sType )
   16449           && ( pNext == rhs.pNext )
   16450           && ( protectedSubmit == rhs.protectedSubmit );
   16451     }
   16452 
   16453     bool operator!=( ProtectedSubmitInfo const& rhs ) const
   16454     {
   16455       return !operator==( rhs );
   16456     }
   16457 
   16458   private:
   16459     StructureType sType = StructureType::eProtectedSubmitInfo;
   16460 
   16461   public:
   16462     const void* pNext = nullptr;
   16463     Bool32 protectedSubmit;
   16464   };
   16465   static_assert( sizeof( ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "struct and wrapper have different size!" );
   16466 
   16467   struct PhysicalDeviceProtectedMemoryFeatures
   16468   {
   16469     PhysicalDeviceProtectedMemoryFeatures( Bool32 protectedMemory_ = 0 )
   16470       : protectedMemory( protectedMemory_ )
   16471     {
   16472     }
   16473 
   16474     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
   16475     {
   16476       memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
   16477     }
   16478 
   16479     PhysicalDeviceProtectedMemoryFeatures& operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
   16480     {
   16481       memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
   16482       return *this;
   16483     }
   16484     PhysicalDeviceProtectedMemoryFeatures& setPNext( void* pNext_ )
   16485     {
   16486       pNext = pNext_;
   16487       return *this;
   16488     }
   16489 
   16490     PhysicalDeviceProtectedMemoryFeatures& setProtectedMemory( Bool32 protectedMemory_ )
   16491     {
   16492       protectedMemory = protectedMemory_;
   16493       return *this;
   16494     }
   16495 
   16496     operator VkPhysicalDeviceProtectedMemoryFeatures const&() const
   16497     {
   16498       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(this);
   16499     }
   16500 
   16501     operator VkPhysicalDeviceProtectedMemoryFeatures &()
   16502     {
   16503       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(this);
   16504     }
   16505 
   16506     bool operator==( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const
   16507     {
   16508       return ( sType == rhs.sType )
   16509           && ( pNext == rhs.pNext )
   16510           && ( protectedMemory == rhs.protectedMemory );
   16511     }
   16512 
   16513     bool operator!=( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const
   16514     {
   16515       return !operator==( rhs );
   16516     }
   16517 
   16518   private:
   16519     StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
   16520 
   16521   public:
   16522     void* pNext = nullptr;
   16523     Bool32 protectedMemory;
   16524   };
   16525   static_assert( sizeof( PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), "struct and wrapper have different size!" );
   16526 
   16527   struct PhysicalDeviceProtectedMemoryProperties
   16528   {
   16529     PhysicalDeviceProtectedMemoryProperties( Bool32 protectedNoFault_ = 0 )
   16530       : protectedNoFault( protectedNoFault_ )
   16531     {
   16532     }
   16533 
   16534     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs )
   16535     {
   16536       memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryProperties ) );
   16537     }
   16538 
   16539     PhysicalDeviceProtectedMemoryProperties& operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs )
   16540     {
   16541       memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryProperties ) );
   16542       return *this;
   16543     }
   16544     PhysicalDeviceProtectedMemoryProperties& setPNext( void* pNext_ )
   16545     {
   16546       pNext = pNext_;
   16547       return *this;
   16548     }
   16549 
   16550     PhysicalDeviceProtectedMemoryProperties& setProtectedNoFault( Bool32 protectedNoFault_ )
   16551     {
   16552       protectedNoFault = protectedNoFault_;
   16553       return *this;
   16554     }
   16555 
   16556     operator VkPhysicalDeviceProtectedMemoryProperties const&() const
   16557     {
   16558       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>(this);
   16559     }
   16560 
   16561     operator VkPhysicalDeviceProtectedMemoryProperties &()
   16562     {
   16563       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>(this);
   16564     }
   16565 
   16566     bool operator==( PhysicalDeviceProtectedMemoryProperties const& rhs ) const
   16567     {
   16568       return ( sType == rhs.sType )
   16569           && ( pNext == rhs.pNext )
   16570           && ( protectedNoFault == rhs.protectedNoFault );
   16571     }
   16572 
   16573     bool operator!=( PhysicalDeviceProtectedMemoryProperties const& rhs ) const
   16574     {
   16575       return !operator==( rhs );
   16576     }
   16577 
   16578   private:
   16579     StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
   16580 
   16581   public:
   16582     void* pNext = nullptr;
   16583     Bool32 protectedNoFault;
   16584   };
   16585   static_assert( sizeof( PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), "struct and wrapper have different size!" );
   16586 
   16587   struct PipelineCoverageToColorStateCreateInfoNV
   16588   {
   16589     PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(),
   16590                                               Bool32 coverageToColorEnable_ = 0,
   16591                                               uint32_t coverageToColorLocation_ = 0 )
   16592       : flags( flags_ )
   16593       , coverageToColorEnable( coverageToColorEnable_ )
   16594       , coverageToColorLocation( coverageToColorLocation_ )
   16595     {
   16596     }
   16597 
   16598     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
   16599     {
   16600       memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
   16601     }
   16602 
   16603     PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
   16604     {
   16605       memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
   16606       return *this;
   16607     }
   16608     PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
   16609     {
   16610       pNext = pNext_;
   16611       return *this;
   16612     }
   16613 
   16614     PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
   16615     {
   16616       flags = flags_;
   16617       return *this;
   16618     }
   16619 
   16620     PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
   16621     {
   16622       coverageToColorEnable = coverageToColorEnable_;
   16623       return *this;
   16624     }
   16625 
   16626     PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
   16627     {
   16628       coverageToColorLocation = coverageToColorLocation_;
   16629       return *this;
   16630     }
   16631 
   16632     operator VkPipelineCoverageToColorStateCreateInfoNV const&() const
   16633     {
   16634       return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
   16635     }
   16636 
   16637     operator VkPipelineCoverageToColorStateCreateInfoNV &()
   16638     {
   16639       return *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV*>(this);
   16640     }
   16641 
   16642     bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
   16643     {
   16644       return ( sType == rhs.sType )
   16645           && ( pNext == rhs.pNext )
   16646           && ( flags == rhs.flags )
   16647           && ( coverageToColorEnable == rhs.coverageToColorEnable )
   16648           && ( coverageToColorLocation == rhs.coverageToColorLocation );
   16649     }
   16650 
   16651     bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
   16652     {
   16653       return !operator==( rhs );
   16654     }
   16655 
   16656   private:
   16657     StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
   16658 
   16659   public:
   16660     const void* pNext = nullptr;
   16661     PipelineCoverageToColorStateCreateFlagsNV flags;
   16662     Bool32 coverageToColorEnable;
   16663     uint32_t coverageToColorLocation;
   16664   };
   16665   static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
   16666 
   16667   struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
   16668   {
   16669     operator VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT const&() const
   16670     {
   16671       return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
   16672     }
   16673 
   16674     operator VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT &()
   16675     {
   16676       return *reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
   16677     }
   16678 
   16679     bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
   16680     {
   16681       return ( sType == rhs.sType )
   16682           && ( pNext == rhs.pNext )
   16683           && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
   16684           && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
   16685     }
   16686 
   16687     bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
   16688     {
   16689       return !operator==( rhs );
   16690     }
   16691 
   16692   private:
   16693     StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
   16694 
   16695   public:
   16696     void* pNext = nullptr;
   16697     Bool32 filterMinmaxSingleComponentFormats;
   16698     Bool32 filterMinmaxImageComponentMapping;
   16699   };
   16700   static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
   16701 
   16702   struct MultisamplePropertiesEXT
   16703   {
   16704     operator VkMultisamplePropertiesEXT const&() const
   16705     {
   16706       return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
   16707     }
   16708 
   16709     operator VkMultisamplePropertiesEXT &()
   16710     {
   16711       return *reinterpret_cast<VkMultisamplePropertiesEXT*>(this);
   16712     }
   16713 
   16714     bool operator==( MultisamplePropertiesEXT const& rhs ) const
   16715     {
   16716       return ( sType == rhs.sType )
   16717           && ( pNext == rhs.pNext )
   16718           && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
   16719     }
   16720 
   16721     bool operator!=( MultisamplePropertiesEXT const& rhs ) const
   16722     {
   16723       return !operator==( rhs );
   16724     }
   16725 
   16726   private:
   16727     StructureType sType = StructureType::eMultisamplePropertiesEXT;
   16728 
   16729   public:
   16730     void* pNext = nullptr;
   16731     Extent2D maxSampleLocationGridSize;
   16732   };
   16733   static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
   16734 
   16735   struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
   16736   {
   16737     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
   16738       : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
   16739     {
   16740     }
   16741 
   16742     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
   16743     {
   16744       memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
   16745     }
   16746 
   16747     PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
   16748     {
   16749       memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
   16750       return *this;
   16751     }
   16752     PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
   16753     {
   16754       pNext = pNext_;
   16755       return *this;
   16756     }
   16757 
   16758     PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
   16759     {
   16760       advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
   16761       return *this;
   16762     }
   16763 
   16764     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&() const
   16765     {
   16766       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
   16767     }
   16768 
   16769     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &()
   16770     {
   16771       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
   16772     }
   16773 
   16774     bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
   16775     {
   16776       return ( sType == rhs.sType )
   16777           && ( pNext == rhs.pNext )
   16778           && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
   16779     }
   16780 
   16781     bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
   16782     {
   16783       return !operator==( rhs );
   16784     }
   16785 
   16786   private:
   16787     StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
   16788 
   16789   public:
   16790     void* pNext = nullptr;
   16791     Bool32 advancedBlendCoherentOperations;
   16792   };
   16793   static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
   16794 
   16795   struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
   16796   {
   16797     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&() const
   16798     {
   16799       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
   16800     }
   16801 
   16802     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &()
   16803     {
   16804       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
   16805     }
   16806 
   16807     bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
   16808     {
   16809       return ( sType == rhs.sType )
   16810           && ( pNext == rhs.pNext )
   16811           && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
   16812           && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
   16813           && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
   16814           && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
   16815           && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
   16816           && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
   16817     }
   16818 
   16819     bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
   16820     {
   16821       return !operator==( rhs );
   16822     }
   16823 
   16824   private:
   16825     StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
   16826 
   16827   public:
   16828     void* pNext = nullptr;
   16829     uint32_t advancedBlendMaxColorAttachments;
   16830     Bool32 advancedBlendIndependentBlend;
   16831     Bool32 advancedBlendNonPremultipliedSrcColor;
   16832     Bool32 advancedBlendNonPremultipliedDstColor;
   16833     Bool32 advancedBlendCorrelatedOverlap;
   16834     Bool32 advancedBlendAllOperations;
   16835   };
   16836   static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
   16837 
   16838   struct PhysicalDeviceInlineUniformBlockFeaturesEXT
   16839   {
   16840     operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT const&() const
   16841     {
   16842       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(this);
   16843     }
   16844 
   16845     operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT &()
   16846     {
   16847       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(this);
   16848     }
   16849 
   16850     bool operator==( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const
   16851     {
   16852       return ( sType == rhs.sType )
   16853           && ( pNext == rhs.pNext )
   16854           && ( inlineUniformBlock == rhs.inlineUniformBlock )
   16855           && ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind );
   16856     }
   16857 
   16858     bool operator!=( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const
   16859     {
   16860       return !operator==( rhs );
   16861     }
   16862 
   16863   private:
   16864     StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT;
   16865 
   16866   public:
   16867     void* pNext = nullptr;
   16868     Bool32 inlineUniformBlock;
   16869     Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind;
   16870   };
   16871   static_assert( sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockFeaturesEXT ), "struct and wrapper have different size!" );
   16872 
   16873   struct PhysicalDeviceInlineUniformBlockPropertiesEXT
   16874   {
   16875     operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const&() const
   16876     {
   16877       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(this);
   16878     }
   16879 
   16880     operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT &()
   16881     {
   16882       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(this);
   16883     }
   16884 
   16885     bool operator==( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const
   16886     {
   16887       return ( sType == rhs.sType )
   16888           && ( pNext == rhs.pNext )
   16889           && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize )
   16890           && ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks )
   16891           && ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks )
   16892           && ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks )
   16893           && ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
   16894     }
   16895 
   16896     bool operator!=( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const
   16897     {
   16898       return !operator==( rhs );
   16899     }
   16900 
   16901   private:
   16902     StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT;
   16903 
   16904   public:
   16905     void* pNext = nullptr;
   16906     uint32_t maxInlineUniformBlockSize;
   16907     uint32_t maxPerStageDescriptorInlineUniformBlocks;
   16908     uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
   16909     uint32_t maxDescriptorSetInlineUniformBlocks;
   16910     uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
   16911   };
   16912   static_assert( sizeof( PhysicalDeviceInlineUniformBlockPropertiesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockPropertiesEXT ), "struct and wrapper have different size!" );
   16913 
   16914   struct WriteDescriptorSetInlineUniformBlockEXT
   16915   {
   16916     WriteDescriptorSetInlineUniformBlockEXT( uint32_t dataSize_ = 0,
   16917                                              const void* pData_ = nullptr )
   16918       : dataSize( dataSize_ )
   16919       , pData( pData_ )
   16920     {
   16921     }
   16922 
   16923     WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs )
   16924     {
   16925       memcpy( this, &rhs, sizeof( WriteDescriptorSetInlineUniformBlockEXT ) );
   16926     }
   16927 
   16928     WriteDescriptorSetInlineUniformBlockEXT& operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs )
   16929     {
   16930       memcpy( this, &rhs, sizeof( WriteDescriptorSetInlineUniformBlockEXT ) );
   16931       return *this;
   16932     }
   16933     WriteDescriptorSetInlineUniformBlockEXT& setPNext( const void* pNext_ )
   16934     {
   16935       pNext = pNext_;
   16936       return *this;
   16937     }
   16938 
   16939     WriteDescriptorSetInlineUniformBlockEXT& setDataSize( uint32_t dataSize_ )
   16940     {
   16941       dataSize = dataSize_;
   16942       return *this;
   16943     }
   16944 
   16945     WriteDescriptorSetInlineUniformBlockEXT& setPData( const void* pData_ )
   16946     {
   16947       pData = pData_;
   16948       return *this;
   16949     }
   16950 
   16951     operator VkWriteDescriptorSetInlineUniformBlockEXT const&() const
   16952     {
   16953       return *reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT*>(this);
   16954     }
   16955 
   16956     operator VkWriteDescriptorSetInlineUniformBlockEXT &()
   16957     {
   16958       return *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT*>(this);
   16959     }
   16960 
   16961     bool operator==( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const
   16962     {
   16963       return ( sType == rhs.sType )
   16964           && ( pNext == rhs.pNext )
   16965           && ( dataSize == rhs.dataSize )
   16966           && ( pData == rhs.pData );
   16967     }
   16968 
   16969     bool operator!=( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const
   16970     {
   16971       return !operator==( rhs );
   16972     }
   16973 
   16974   private:
   16975     StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT;
   16976 
   16977   public:
   16978     const void* pNext = nullptr;
   16979     uint32_t dataSize;
   16980     const void* pData;
   16981   };
   16982   static_assert( sizeof( WriteDescriptorSetInlineUniformBlockEXT ) == sizeof( VkWriteDescriptorSetInlineUniformBlockEXT ), "struct and wrapper have different size!" );
   16983 
   16984   struct DescriptorPoolInlineUniformBlockCreateInfoEXT
   16985   {
   16986     DescriptorPoolInlineUniformBlockCreateInfoEXT( uint32_t maxInlineUniformBlockBindings_ = 0 )
   16987       : maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ )
   16988     {
   16989     }
   16990 
   16991     DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs )
   16992     {
   16993       memcpy( this, &rhs, sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) );
   16994     }
   16995 
   16996     DescriptorPoolInlineUniformBlockCreateInfoEXT& operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs )
   16997     {
   16998       memcpy( this, &rhs, sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) );
   16999       return *this;
   17000     }
   17001     DescriptorPoolInlineUniformBlockCreateInfoEXT& setPNext( const void* pNext_ )
   17002     {
   17003       pNext = pNext_;
   17004       return *this;
   17005     }
   17006 
   17007     DescriptorPoolInlineUniformBlockCreateInfoEXT& setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ )
   17008     {
   17009       maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_;
   17010       return *this;
   17011     }
   17012 
   17013     operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT const&() const
   17014     {
   17015       return *reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(this);
   17016     }
   17017 
   17018     operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT &()
   17019     {
   17020       return *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(this);
   17021     }
   17022 
   17023     bool operator==( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const
   17024     {
   17025       return ( sType == rhs.sType )
   17026           && ( pNext == rhs.pNext )
   17027           && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings );
   17028     }
   17029 
   17030     bool operator!=( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const
   17031     {
   17032       return !operator==( rhs );
   17033     }
   17034 
   17035   private:
   17036     StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT;
   17037 
   17038   public:
   17039     const void* pNext = nullptr;
   17040     uint32_t maxInlineUniformBlockBindings;
   17041   };
   17042   static_assert( sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) == sizeof( VkDescriptorPoolInlineUniformBlockCreateInfoEXT ), "struct and wrapper have different size!" );
   17043 
   17044   struct ImageFormatListCreateInfoKHR
   17045   {
   17046     ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0,
   17047                                   const Format* pViewFormats_ = nullptr )
   17048       : viewFormatCount( viewFormatCount_ )
   17049       , pViewFormats( pViewFormats_ )
   17050     {
   17051     }
   17052 
   17053     ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
   17054     {
   17055       memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
   17056     }
   17057 
   17058     ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
   17059     {
   17060       memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
   17061       return *this;
   17062     }
   17063     ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
   17064     {
   17065       pNext = pNext_;
   17066       return *this;
   17067     }
   17068 
   17069     ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
   17070     {
   17071       viewFormatCount = viewFormatCount_;
   17072       return *this;
   17073     }
   17074 
   17075     ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
   17076     {
   17077       pViewFormats = pViewFormats_;
   17078       return *this;
   17079     }
   17080 
   17081     operator VkImageFormatListCreateInfoKHR const&() const
   17082     {
   17083       return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
   17084     }
   17085 
   17086     operator VkImageFormatListCreateInfoKHR &()
   17087     {
   17088       return *reinterpret_cast<VkImageFormatListCreateInfoKHR*>(this);
   17089     }
   17090 
   17091     bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
   17092     {
   17093       return ( sType == rhs.sType )
   17094           && ( pNext == rhs.pNext )
   17095           && ( viewFormatCount == rhs.viewFormatCount )
   17096           && ( pViewFormats == rhs.pViewFormats );
   17097     }
   17098 
   17099     bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
   17100     {
   17101       return !operator==( rhs );
   17102     }
   17103 
   17104   private:
   17105     StructureType sType = StructureType::eImageFormatListCreateInfoKHR;
   17106 
   17107   public:
   17108     const void* pNext = nullptr;
   17109     uint32_t viewFormatCount;
   17110     const Format* pViewFormats;
   17111   };
   17112   static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
   17113 
   17114   struct ValidationCacheCreateInfoEXT
   17115   {
   17116     ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(),
   17117                                   size_t initialDataSize_ = 0,
   17118                                   const void* pInitialData_ = nullptr )
   17119       : flags( flags_ )
   17120       , initialDataSize( initialDataSize_ )
   17121       , pInitialData( pInitialData_ )
   17122     {
   17123     }
   17124 
   17125     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
   17126     {
   17127       memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
   17128     }
   17129 
   17130     ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
   17131     {
   17132       memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
   17133       return *this;
   17134     }
   17135     ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
   17136     {
   17137       pNext = pNext_;
   17138       return *this;
   17139     }
   17140 
   17141     ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
   17142     {
   17143       flags = flags_;
   17144       return *this;
   17145     }
   17146 
   17147     ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
   17148     {
   17149       initialDataSize = initialDataSize_;
   17150       return *this;
   17151     }
   17152 
   17153     ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
   17154     {
   17155       pInitialData = pInitialData_;
   17156       return *this;
   17157     }
   17158 
   17159     operator VkValidationCacheCreateInfoEXT const&() const
   17160     {
   17161       return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
   17162     }
   17163 
   17164     operator VkValidationCacheCreateInfoEXT &()
   17165     {
   17166       return *reinterpret_cast<VkValidationCacheCreateInfoEXT*>(this);
   17167     }
   17168 
   17169     bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
   17170     {
   17171       return ( sType == rhs.sType )
   17172           && ( pNext == rhs.pNext )
   17173           && ( flags == rhs.flags )
   17174           && ( initialDataSize == rhs.initialDataSize )
   17175           && ( pInitialData == rhs.pInitialData );
   17176     }
   17177 
   17178     bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
   17179     {
   17180       return !operator==( rhs );
   17181     }
   17182 
   17183   private:
   17184     StructureType sType = StructureType::eValidationCacheCreateInfoEXT;
   17185 
   17186   public:
   17187     const void* pNext = nullptr;
   17188     ValidationCacheCreateFlagsEXT flags;
   17189     size_t initialDataSize;
   17190     const void* pInitialData;
   17191   };
   17192   static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
   17193 
   17194   struct ShaderModuleValidationCacheCreateInfoEXT
   17195   {
   17196     ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
   17197       : validationCache( validationCache_ )
   17198     {
   17199     }
   17200 
   17201     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
   17202     {
   17203       memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
   17204     }
   17205 
   17206     ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
   17207     {
   17208       memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
   17209       return *this;
   17210     }
   17211     ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
   17212     {
   17213       pNext = pNext_;
   17214       return *this;
   17215     }
   17216 
   17217     ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
   17218     {
   17219       validationCache = validationCache_;
   17220       return *this;
   17221     }
   17222 
   17223     operator VkShaderModuleValidationCacheCreateInfoEXT const&() const
   17224     {
   17225       return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
   17226     }
   17227 
   17228     operator VkShaderModuleValidationCacheCreateInfoEXT &()
   17229     {
   17230       return *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT*>(this);
   17231     }
   17232 
   17233     bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
   17234     {
   17235       return ( sType == rhs.sType )
   17236           && ( pNext == rhs.pNext )
   17237           && ( validationCache == rhs.validationCache );
   17238     }
   17239 
   17240     bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
   17241     {
   17242       return !operator==( rhs );
   17243     }
   17244 
   17245   private:
   17246     StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
   17247 
   17248   public:
   17249     const void* pNext = nullptr;
   17250     ValidationCacheEXT validationCache;
   17251   };
   17252   static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
   17253 
   17254   struct PhysicalDeviceMaintenance3Properties
   17255   {
   17256     operator VkPhysicalDeviceMaintenance3Properties const&() const
   17257     {
   17258       return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>(this);
   17259     }
   17260 
   17261     operator VkPhysicalDeviceMaintenance3Properties &()
   17262     {
   17263       return *reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>(this);
   17264     }
   17265 
   17266     bool operator==( PhysicalDeviceMaintenance3Properties const& rhs ) const
   17267     {
   17268       return ( sType == rhs.sType )
   17269           && ( pNext == rhs.pNext )
   17270           && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors )
   17271           && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
   17272     }
   17273 
   17274     bool operator!=( PhysicalDeviceMaintenance3Properties const& rhs ) const
   17275     {
   17276       return !operator==( rhs );
   17277     }
   17278 
   17279   private:
   17280     StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties;
   17281 
   17282   public:
   17283     void* pNext = nullptr;
   17284     uint32_t maxPerSetDescriptors;
   17285     DeviceSize maxMemoryAllocationSize;
   17286   };
   17287   static_assert( sizeof( PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), "struct and wrapper have different size!" );
   17288 
   17289   using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
   17290 
   17291   struct DescriptorSetLayoutSupport
   17292   {
   17293     operator VkDescriptorSetLayoutSupport const&() const
   17294     {
   17295       return *reinterpret_cast<const VkDescriptorSetLayoutSupport*>(this);
   17296     }
   17297 
   17298     operator VkDescriptorSetLayoutSupport &()
   17299     {
   17300       return *reinterpret_cast<VkDescriptorSetLayoutSupport*>(this);
   17301     }
   17302 
   17303     bool operator==( DescriptorSetLayoutSupport const& rhs ) const
   17304     {
   17305       return ( sType == rhs.sType )
   17306           && ( pNext == rhs.pNext )
   17307           && ( supported == rhs.supported );
   17308     }
   17309 
   17310     bool operator!=( DescriptorSetLayoutSupport const& rhs ) const
   17311     {
   17312       return !operator==( rhs );
   17313     }
   17314 
   17315   private:
   17316     StructureType sType = StructureType::eDescriptorSetLayoutSupport;
   17317 
   17318   public:
   17319     void* pNext = nullptr;
   17320     Bool32 supported;
   17321   };
   17322   static_assert( sizeof( DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), "struct and wrapper have different size!" );
   17323 
   17324   using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
   17325 
   17326   struct PhysicalDeviceShaderDrawParameterFeatures
   17327   {
   17328     PhysicalDeviceShaderDrawParameterFeatures( Bool32 shaderDrawParameters_ = 0 )
   17329       : shaderDrawParameters( shaderDrawParameters_ )
   17330     {
   17331     }
   17332 
   17333     PhysicalDeviceShaderDrawParameterFeatures( VkPhysicalDeviceShaderDrawParameterFeatures const & rhs )
   17334     {
   17335       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParameterFeatures ) );
   17336     }
   17337 
   17338     PhysicalDeviceShaderDrawParameterFeatures& operator=( VkPhysicalDeviceShaderDrawParameterFeatures const & rhs )
   17339     {
   17340       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParameterFeatures ) );
   17341       return *this;
   17342     }
   17343     PhysicalDeviceShaderDrawParameterFeatures& setPNext( void* pNext_ )
   17344     {
   17345       pNext = pNext_;
   17346       return *this;
   17347     }
   17348 
   17349     PhysicalDeviceShaderDrawParameterFeatures& setShaderDrawParameters( Bool32 shaderDrawParameters_ )
   17350     {
   17351       shaderDrawParameters = shaderDrawParameters_;
   17352       return *this;
   17353     }
   17354 
   17355     operator VkPhysicalDeviceShaderDrawParameterFeatures const&() const
   17356     {
   17357       return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParameterFeatures*>(this);
   17358     }
   17359 
   17360     operator VkPhysicalDeviceShaderDrawParameterFeatures &()
   17361     {
   17362       return *reinterpret_cast<VkPhysicalDeviceShaderDrawParameterFeatures*>(this);
   17363     }
   17364 
   17365     bool operator==( PhysicalDeviceShaderDrawParameterFeatures const& rhs ) const
   17366     {
   17367       return ( sType == rhs.sType )
   17368           && ( pNext == rhs.pNext )
   17369           && ( shaderDrawParameters == rhs.shaderDrawParameters );
   17370     }
   17371 
   17372     bool operator!=( PhysicalDeviceShaderDrawParameterFeatures const& rhs ) const
   17373     {
   17374       return !operator==( rhs );
   17375     }
   17376 
   17377   private:
   17378     StructureType sType = StructureType::ePhysicalDeviceShaderDrawParameterFeatures;
   17379 
   17380   public:
   17381     void* pNext = nullptr;
   17382     Bool32 shaderDrawParameters;
   17383   };
   17384   static_assert( sizeof( PhysicalDeviceShaderDrawParameterFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParameterFeatures ), "struct and wrapper have different size!" );
   17385 
   17386   struct DebugUtilsLabelEXT
   17387   {
   17388     DebugUtilsLabelEXT( const char* pLabelName_ = nullptr,
   17389                         std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
   17390       : pLabelName( pLabelName_ )
   17391     {
   17392       memcpy( &color, color_.data(), 4 * sizeof( float ) );
   17393     }
   17394 
   17395     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs )
   17396     {
   17397       memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
   17398     }
   17399 
   17400     DebugUtilsLabelEXT& operator=( VkDebugUtilsLabelEXT const & rhs )
   17401     {
   17402       memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
   17403       return *this;
   17404     }
   17405     DebugUtilsLabelEXT& setPNext( const void* pNext_ )
   17406     {
   17407       pNext = pNext_;
   17408       return *this;
   17409     }
   17410 
   17411     DebugUtilsLabelEXT& setPLabelName( const char* pLabelName_ )
   17412     {
   17413       pLabelName = pLabelName_;
   17414       return *this;
   17415     }
   17416 
   17417     DebugUtilsLabelEXT& setColor( std::array<float,4> color_ )
   17418     {
   17419       memcpy( &color, color_.data(), 4 * sizeof( float ) );
   17420       return *this;
   17421     }
   17422 
   17423     operator VkDebugUtilsLabelEXT const&() const
   17424     {
   17425       return *reinterpret_cast<const VkDebugUtilsLabelEXT*>(this);
   17426     }
   17427 
   17428     operator VkDebugUtilsLabelEXT &()
   17429     {
   17430       return *reinterpret_cast<VkDebugUtilsLabelEXT*>(this);
   17431     }
   17432 
   17433     bool operator==( DebugUtilsLabelEXT const& rhs ) const
   17434     {
   17435       return ( sType == rhs.sType )
   17436           && ( pNext == rhs.pNext )
   17437           && ( pLabelName == rhs.pLabelName )
   17438           && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
   17439     }
   17440 
   17441     bool operator!=( DebugUtilsLabelEXT const& rhs ) const
   17442     {
   17443       return !operator==( rhs );
   17444     }
   17445 
   17446   private:
   17447     StructureType sType = StructureType::eDebugUtilsLabelEXT;
   17448 
   17449   public:
   17450     const void* pNext = nullptr;
   17451     const char* pLabelName;
   17452     float color[4];
   17453   };
   17454   static_assert( sizeof( DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "struct and wrapper have different size!" );
   17455 
   17456   struct MemoryHostPointerPropertiesEXT
   17457   {
   17458     MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = 0 )
   17459       : memoryTypeBits( memoryTypeBits_ )
   17460     {
   17461     }
   17462 
   17463     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs )
   17464     {
   17465       memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
   17466     }
   17467 
   17468     MemoryHostPointerPropertiesEXT& operator=( VkMemoryHostPointerPropertiesEXT const & rhs )
   17469     {
   17470       memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
   17471       return *this;
   17472     }
   17473     MemoryHostPointerPropertiesEXT& setPNext( void* pNext_ )
   17474     {
   17475       pNext = pNext_;
   17476       return *this;
   17477     }
   17478 
   17479     MemoryHostPointerPropertiesEXT& setMemoryTypeBits( uint32_t memoryTypeBits_ )
   17480     {
   17481       memoryTypeBits = memoryTypeBits_;
   17482       return *this;
   17483     }
   17484 
   17485     operator VkMemoryHostPointerPropertiesEXT const&() const
   17486     {
   17487       return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT*>(this);
   17488     }
   17489 
   17490     operator VkMemoryHostPointerPropertiesEXT &()
   17491     {
   17492       return *reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>(this);
   17493     }
   17494 
   17495     bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const
   17496     {
   17497       return ( sType == rhs.sType )
   17498           && ( pNext == rhs.pNext )
   17499           && ( memoryTypeBits == rhs.memoryTypeBits );
   17500     }
   17501 
   17502     bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const
   17503     {
   17504       return !operator==( rhs );
   17505     }
   17506 
   17507   private:
   17508     StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
   17509 
   17510   public:
   17511     void* pNext = nullptr;
   17512     uint32_t memoryTypeBits;
   17513   };
   17514   static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" );
   17515 
   17516   struct PhysicalDeviceExternalMemoryHostPropertiesEXT
   17517   {
   17518     PhysicalDeviceExternalMemoryHostPropertiesEXT( DeviceSize minImportedHostPointerAlignment_ = 0 )
   17519       : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
   17520     {
   17521     }
   17522 
   17523     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
   17524     {
   17525       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
   17526     }
   17527 
   17528     PhysicalDeviceExternalMemoryHostPropertiesEXT& operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
   17529     {
   17530       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
   17531       return *this;
   17532     }
   17533     PhysicalDeviceExternalMemoryHostPropertiesEXT& setPNext( void* pNext_ )
   17534     {
   17535       pNext = pNext_;
   17536       return *this;
   17537     }
   17538 
   17539     PhysicalDeviceExternalMemoryHostPropertiesEXT& setMinImportedHostPointerAlignment( DeviceSize minImportedHostPointerAlignment_ )
   17540     {
   17541       minImportedHostPointerAlignment = minImportedHostPointerAlignment_;
   17542       return *this;
   17543     }
   17544 
   17545     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&() const
   17546     {
   17547       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(this);
   17548     }
   17549 
   17550     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &()
   17551     {
   17552       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(this);
   17553     }
   17554 
   17555     bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
   17556     {
   17557       return ( sType == rhs.sType )
   17558           && ( pNext == rhs.pNext )
   17559           && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
   17560     }
   17561 
   17562     bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
   17563     {
   17564       return !operator==( rhs );
   17565     }
   17566 
   17567   private:
   17568     StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
   17569 
   17570   public:
   17571     void* pNext = nullptr;
   17572     DeviceSize minImportedHostPointerAlignment;
   17573   };
   17574   static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" );
   17575 
   17576   struct PhysicalDeviceConservativeRasterizationPropertiesEXT
   17577   {
   17578     PhysicalDeviceConservativeRasterizationPropertiesEXT( float primitiveOverestimationSize_ = 0,
   17579                                                           float maxExtraPrimitiveOverestimationSize_ = 0,
   17580                                                           float extraPrimitiveOverestimationSizeGranularity_ = 0,
   17581                                                           Bool32 primitiveUnderestimation_ = 0,
   17582                                                           Bool32 conservativePointAndLineRasterization_ = 0,
   17583                                                           Bool32 degenerateTrianglesRasterized_ = 0,
   17584                                                           Bool32 degenerateLinesRasterized_ = 0,
   17585                                                           Bool32 fullyCoveredFragmentShaderInputVariable_ = 0,
   17586                                                           Bool32 conservativeRasterizationPostDepthCoverage_ = 0 )
   17587       : primitiveOverestimationSize( primitiveOverestimationSize_ )
   17588       , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ )
   17589       , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ )
   17590       , primitiveUnderestimation( primitiveUnderestimation_ )
   17591       , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ )
   17592       , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ )
   17593       , degenerateLinesRasterized( degenerateLinesRasterized_ )
   17594       , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ )
   17595       , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ )
   17596     {
   17597     }
   17598 
   17599     PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
   17600     {
   17601       memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
   17602     }
   17603 
   17604     PhysicalDeviceConservativeRasterizationPropertiesEXT& operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
   17605     {
   17606       memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
   17607       return *this;
   17608     }
   17609     PhysicalDeviceConservativeRasterizationPropertiesEXT& setPNext( void* pNext_ )
   17610     {
   17611       pNext = pNext_;
   17612       return *this;
   17613     }
   17614 
   17615     PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveOverestimationSize( float primitiveOverestimationSize_ )
   17616     {
   17617       primitiveOverestimationSize = primitiveOverestimationSize_;
   17618       return *this;
   17619     }
   17620 
   17621     PhysicalDeviceConservativeRasterizationPropertiesEXT& setMaxExtraPrimitiveOverestimationSize( float maxExtraPrimitiveOverestimationSize_ )
   17622     {
   17623       maxExtraPrimitiveOverestimationSize = maxExtraPrimitiveOverestimationSize_;
   17624       return *this;
   17625     }
   17626 
   17627     PhysicalDeviceConservativeRasterizationPropertiesEXT& setExtraPrimitiveOverestimationSizeGranularity( float extraPrimitiveOverestimationSizeGranularity_ )
   17628     {
   17629       extraPrimitiveOverestimationSizeGranularity = extraPrimitiveOverestimationSizeGranularity_;
   17630       return *this;
   17631     }
   17632 
   17633     PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveUnderestimation( Bool32 primitiveUnderestimation_ )
   17634     {
   17635       primitiveUnderestimation = primitiveUnderestimation_;
   17636       return *this;
   17637     }
   17638 
   17639     PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativePointAndLineRasterization( Bool32 conservativePointAndLineRasterization_ )
   17640     {
   17641       conservativePointAndLineRasterization = conservativePointAndLineRasterization_;
   17642       return *this;
   17643     }
   17644 
   17645     PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateTrianglesRasterized( Bool32 degenerateTrianglesRasterized_ )
   17646     {
   17647       degenerateTrianglesRasterized = degenerateTrianglesRasterized_;
   17648       return *this;
   17649     }
   17650 
   17651     PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateLinesRasterized( Bool32 degenerateLinesRasterized_ )
   17652     {
   17653       degenerateLinesRasterized = degenerateLinesRasterized_;
   17654       return *this;
   17655     }
   17656 
   17657     PhysicalDeviceConservativeRasterizationPropertiesEXT& setFullyCoveredFragmentShaderInputVariable( Bool32 fullyCoveredFragmentShaderInputVariable_ )
   17658     {
   17659       fullyCoveredFragmentShaderInputVariable = fullyCoveredFragmentShaderInputVariable_;
   17660       return *this;
   17661     }
   17662 
   17663     PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativeRasterizationPostDepthCoverage( Bool32 conservativeRasterizationPostDepthCoverage_ )
   17664     {
   17665       conservativeRasterizationPostDepthCoverage = conservativeRasterizationPostDepthCoverage_;
   17666       return *this;
   17667     }
   17668 
   17669     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&() const
   17670     {
   17671       return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(this);
   17672     }
   17673 
   17674     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &()
   17675     {
   17676       return *reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(this);
   17677     }
   17678 
   17679     bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
   17680     {
   17681       return ( sType == rhs.sType )
   17682           && ( pNext == rhs.pNext )
   17683           && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize )
   17684           && ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize )
   17685           && ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity )
   17686           && ( primitiveUnderestimation == rhs.primitiveUnderestimation )
   17687           && ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization )
   17688           && ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized )
   17689           && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized )
   17690           && ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable )
   17691           && ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
   17692     }
   17693 
   17694     bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
   17695     {
   17696       return !operator==( rhs );
   17697     }
   17698 
   17699   private:
   17700     StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
   17701 
   17702   public:
   17703     void* pNext = nullptr;
   17704     float primitiveOverestimationSize;
   17705     float maxExtraPrimitiveOverestimationSize;
   17706     float extraPrimitiveOverestimationSizeGranularity;
   17707     Bool32 primitiveUnderestimation;
   17708     Bool32 conservativePointAndLineRasterization;
   17709     Bool32 degenerateTrianglesRasterized;
   17710     Bool32 degenerateLinesRasterized;
   17711     Bool32 fullyCoveredFragmentShaderInputVariable;
   17712     Bool32 conservativeRasterizationPostDepthCoverage;
   17713   };
   17714   static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "struct and wrapper have different size!" );
   17715 
   17716   struct PhysicalDeviceShaderCorePropertiesAMD
   17717   {
   17718     operator VkPhysicalDeviceShaderCorePropertiesAMD const&() const
   17719     {
   17720       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD*>(this);
   17721     }
   17722 
   17723     operator VkPhysicalDeviceShaderCorePropertiesAMD &()
   17724     {
   17725       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD*>(this);
   17726     }
   17727 
   17728     bool operator==( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const
   17729     {
   17730       return ( sType == rhs.sType )
   17731           && ( pNext == rhs.pNext )
   17732           && ( shaderEngineCount == rhs.shaderEngineCount )
   17733           && ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount )
   17734           && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray )
   17735           && ( simdPerComputeUnit == rhs.simdPerComputeUnit )
   17736           && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd )
   17737           && ( wavefrontSize == rhs.wavefrontSize )
   17738           && ( sgprsPerSimd == rhs.sgprsPerSimd )
   17739           && ( minSgprAllocation == rhs.minSgprAllocation )
   17740           && ( maxSgprAllocation == rhs.maxSgprAllocation )
   17741           && ( sgprAllocationGranularity == rhs.sgprAllocationGranularity )
   17742           && ( vgprsPerSimd == rhs.vgprsPerSimd )
   17743           && ( minVgprAllocation == rhs.minVgprAllocation )
   17744           && ( maxVgprAllocation == rhs.maxVgprAllocation )
   17745           && ( vgprAllocationGranularity == rhs.vgprAllocationGranularity );
   17746     }
   17747 
   17748     bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const
   17749     {
   17750       return !operator==( rhs );
   17751     }
   17752 
   17753   private:
   17754     StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
   17755 
   17756   public:
   17757     void* pNext = nullptr;
   17758     uint32_t shaderEngineCount;
   17759     uint32_t shaderArraysPerEngineCount;
   17760     uint32_t computeUnitsPerShaderArray;
   17761     uint32_t simdPerComputeUnit;
   17762     uint32_t wavefrontsPerSimd;
   17763     uint32_t wavefrontSize;
   17764     uint32_t sgprsPerSimd;
   17765     uint32_t minSgprAllocation;
   17766     uint32_t maxSgprAllocation;
   17767     uint32_t sgprAllocationGranularity;
   17768     uint32_t vgprsPerSimd;
   17769     uint32_t minVgprAllocation;
   17770     uint32_t maxVgprAllocation;
   17771     uint32_t vgprAllocationGranularity;
   17772   };
   17773   static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "struct and wrapper have different size!" );
   17774 
   17775   struct PhysicalDeviceDescriptorIndexingFeaturesEXT
   17776   {
   17777     PhysicalDeviceDescriptorIndexingFeaturesEXT( Bool32 shaderInputAttachmentArrayDynamicIndexing_ = 0,
   17778                                                  Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = 0,
   17779                                                  Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = 0,
   17780                                                  Bool32 shaderUniformBufferArrayNonUniformIndexing_ = 0,
   17781                                                  Bool32 shaderSampledImageArrayNonUniformIndexing_ = 0,
   17782                                                  Bool32 shaderStorageBufferArrayNonUniformIndexing_ = 0,
   17783                                                  Bool32 shaderStorageImageArrayNonUniformIndexing_ = 0,
   17784                                                  Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = 0,
   17785                                                  Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = 0,
   17786                                                  Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = 0,
   17787                                                  Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = 0,
   17788                                                  Bool32 descriptorBindingSampledImageUpdateAfterBind_ = 0,
   17789                                                  Bool32 descriptorBindingStorageImageUpdateAfterBind_ = 0,
   17790                                                  Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = 0,
   17791                                                  Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = 0,
   17792                                                  Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = 0,
   17793                                                  Bool32 descriptorBindingUpdateUnusedWhilePending_ = 0,
   17794                                                  Bool32 descriptorBindingPartiallyBound_ = 0,
   17795                                                  Bool32 descriptorBindingVariableDescriptorCount_ = 0,
   17796                                                  Bool32 runtimeDescriptorArray_ = 0 )
   17797       : shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ )
   17798       , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ )
   17799       , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ )
   17800       , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ )
   17801       , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ )
   17802       , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ )
   17803       , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ )
   17804       , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ )
   17805       , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ )
   17806       , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ )
   17807       , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ )
   17808       , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ )
   17809       , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ )
   17810       , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ )
   17811       , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ )
   17812       , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ )
   17813       , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ )
   17814       , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ )
   17815       , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ )
   17816       , runtimeDescriptorArray( runtimeDescriptorArray_ )
   17817     {
   17818     }
   17819 
   17820     PhysicalDeviceDescriptorIndexingFeaturesEXT( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
   17821     {
   17822       memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
   17823     }
   17824 
   17825     PhysicalDeviceDescriptorIndexingFeaturesEXT& operator=( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
   17826     {
   17827       memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
   17828       return *this;
   17829     }
   17830     PhysicalDeviceDescriptorIndexingFeaturesEXT& setPNext( void* pNext_ )
   17831     {
   17832       pNext = pNext_;
   17833       return *this;
   17834     }
   17835 
   17836     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ )
   17837     {
   17838       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
   17839       return *this;
   17840     }
   17841 
   17842     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ )
   17843     {
   17844       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
   17845       return *this;
   17846     }
   17847 
   17848     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ )
   17849     {
   17850       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
   17851       return *this;
   17852     }
   17853 
   17854     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ )
   17855     {
   17856       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
   17857       return *this;
   17858     }
   17859 
   17860     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ )
   17861     {
   17862       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
   17863       return *this;
   17864     }
   17865 
   17866     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ )
   17867     {
   17868       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
   17869       return *this;
   17870     }
   17871 
   17872     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ )
   17873     {
   17874       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
   17875       return *this;
   17876     }
   17877 
   17878     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ )
   17879     {
   17880       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
   17881       return *this;
   17882     }
   17883 
   17884     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ )
   17885     {
   17886       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
   17887       return *this;
   17888     }
   17889 
   17890     PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ )
   17891     {
   17892       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
   17893       return *this;
   17894     }
   17895 
   17896     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ )
   17897     {
   17898       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
   17899       return *this;
   17900     }
   17901 
   17902     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ )
   17903     {
   17904       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
   17905       return *this;
   17906     }
   17907 
   17908     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ )
   17909     {
   17910       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
   17911       return *this;
   17912     }
   17913 
   17914     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ )
   17915     {
   17916       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
   17917       return *this;
   17918     }
   17919 
   17920     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ )
   17921     {
   17922       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
   17923       return *this;
   17924     }
   17925 
   17926     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ )
   17927     {
   17928       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
   17929       return *this;
   17930     }
   17931 
   17932     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ )
   17933     {
   17934       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
   17935       return *this;
   17936     }
   17937 
   17938     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ )
   17939     {
   17940       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
   17941       return *this;
   17942     }
   17943 
   17944     PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ )
   17945     {
   17946       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
   17947       return *this;
   17948     }
   17949 
   17950     PhysicalDeviceDescriptorIndexingFeaturesEXT& setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ )
   17951     {
   17952       runtimeDescriptorArray = runtimeDescriptorArray_;
   17953       return *this;
   17954     }
   17955 
   17956     operator VkPhysicalDeviceDescriptorIndexingFeaturesEXT const&() const
   17957     {
   17958       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeaturesEXT*>(this);
   17959     }
   17960 
   17961     operator VkPhysicalDeviceDescriptorIndexingFeaturesEXT &()
   17962     {
   17963       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeaturesEXT*>(this);
   17964     }
   17965 
   17966     bool operator==( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const
   17967     {
   17968       return ( sType == rhs.sType )
   17969           && ( pNext == rhs.pNext )
   17970           && ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing )
   17971           && ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing )
   17972           && ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing )
   17973           && ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing )
   17974           && ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing )
   17975           && ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing )
   17976           && ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing )
   17977           && ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing )
   17978           && ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing )
   17979           && ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing )
   17980           && ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind )
   17981           && ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind )
   17982           && ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind )
   17983           && ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind )
   17984           && ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind )
   17985           && ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind )
   17986           && ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending )
   17987           && ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound )
   17988           && ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount )
   17989           && ( runtimeDescriptorArray == rhs.runtimeDescriptorArray );
   17990     }
   17991 
   17992     bool operator!=( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const
   17993     {
   17994       return !operator==( rhs );
   17995     }
   17996 
   17997   private:
   17998     StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT;
   17999 
   18000   public:
   18001     void* pNext = nullptr;
   18002     Bool32 shaderInputAttachmentArrayDynamicIndexing;
   18003     Bool32 shaderUniformTexelBufferArrayDynamicIndexing;
   18004     Bool32 shaderStorageTexelBufferArrayDynamicIndexing;
   18005     Bool32 shaderUniformBufferArrayNonUniformIndexing;
   18006     Bool32 shaderSampledImageArrayNonUniformIndexing;
   18007     Bool32 shaderStorageBufferArrayNonUniformIndexing;
   18008     Bool32 shaderStorageImageArrayNonUniformIndexing;
   18009     Bool32 shaderInputAttachmentArrayNonUniformIndexing;
   18010     Bool32 shaderUniformTexelBufferArrayNonUniformIndexing;
   18011     Bool32 shaderStorageTexelBufferArrayNonUniformIndexing;
   18012     Bool32 descriptorBindingUniformBufferUpdateAfterBind;
   18013     Bool32 descriptorBindingSampledImageUpdateAfterBind;
   18014     Bool32 descriptorBindingStorageImageUpdateAfterBind;
   18015     Bool32 descriptorBindingStorageBufferUpdateAfterBind;
   18016     Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
   18017     Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
   18018     Bool32 descriptorBindingUpdateUnusedWhilePending;
   18019     Bool32 descriptorBindingPartiallyBound;
   18020     Bool32 descriptorBindingVariableDescriptorCount;
   18021     Bool32 runtimeDescriptorArray;
   18022   };
   18023   static_assert( sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeaturesEXT ), "struct and wrapper have different size!" );
   18024 
   18025   struct PhysicalDeviceDescriptorIndexingPropertiesEXT
   18026   {
   18027     operator VkPhysicalDeviceDescriptorIndexingPropertiesEXT const&() const
   18028     {
   18029       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingPropertiesEXT*>(this);
   18030     }
   18031 
   18032     operator VkPhysicalDeviceDescriptorIndexingPropertiesEXT &()
   18033     {
   18034       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingPropertiesEXT*>(this);
   18035     }
   18036 
   18037     bool operator==( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const
   18038     {
   18039       return ( sType == rhs.sType )
   18040           && ( pNext == rhs.pNext )
   18041           && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools )
   18042           && ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative )
   18043           && ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative )
   18044           && ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative )
   18045           && ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative )
   18046           && ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative )
   18047           && ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind )
   18048           && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod )
   18049           && ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers )
   18050           && ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers )
   18051           && ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers )
   18052           && ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages )
   18053           && ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages )
   18054           && ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments )
   18055           && ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources )
   18056           && ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers )
   18057           && ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers )
   18058           && ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic )
   18059           && ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers )
   18060           && ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic )
   18061           && ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages )
   18062           && ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages )
   18063           && ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments );
   18064     }
   18065 
   18066     bool operator!=( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const
   18067     {
   18068       return !operator==( rhs );
   18069     }
   18070 
   18071   private:
   18072     StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT;
   18073 
   18074   public:
   18075     void* pNext = nullptr;
   18076     uint32_t maxUpdateAfterBindDescriptorsInAllPools;
   18077     Bool32 shaderUniformBufferArrayNonUniformIndexingNative;
   18078     Bool32 shaderSampledImageArrayNonUniformIndexingNative;
   18079     Bool32 shaderStorageBufferArrayNonUniformIndexingNative;
   18080     Bool32 shaderStorageImageArrayNonUniformIndexingNative;
   18081     Bool32 shaderInputAttachmentArrayNonUniformIndexingNative;
   18082     Bool32 robustBufferAccessUpdateAfterBind;
   18083     Bool32 quadDivergentImplicitLod;
   18084     uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
   18085     uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
   18086     uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
   18087     uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
   18088     uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
   18089     uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
   18090     uint32_t maxPerStageUpdateAfterBindResources;
   18091     uint32_t maxDescriptorSetUpdateAfterBindSamplers;
   18092     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
   18093     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
   18094     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
   18095     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
   18096     uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
   18097     uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
   18098     uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
   18099   };
   18100   static_assert( sizeof( PhysicalDeviceDescriptorIndexingPropertiesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingPropertiesEXT ), "struct and wrapper have different size!" );
   18101 
   18102   struct DescriptorSetVariableDescriptorCountAllocateInfoEXT
   18103   {
   18104     DescriptorSetVariableDescriptorCountAllocateInfoEXT( uint32_t descriptorSetCount_ = 0,
   18105                                                          const uint32_t* pDescriptorCounts_ = nullptr )
   18106       : descriptorSetCount( descriptorSetCount_ )
   18107       , pDescriptorCounts( pDescriptorCounts_ )
   18108     {
   18109     }
   18110 
   18111     DescriptorSetVariableDescriptorCountAllocateInfoEXT( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
   18112     {
   18113       memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
   18114     }
   18115 
   18116     DescriptorSetVariableDescriptorCountAllocateInfoEXT& operator=( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
   18117     {
   18118       memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
   18119       return *this;
   18120     }
   18121     DescriptorSetVariableDescriptorCountAllocateInfoEXT& setPNext( const void* pNext_ )
   18122     {
   18123       pNext = pNext_;
   18124       return *this;
   18125     }
   18126 
   18127     DescriptorSetVariableDescriptorCountAllocateInfoEXT& setDescriptorSetCount( uint32_t descriptorSetCount_ )
   18128     {
   18129       descriptorSetCount = descriptorSetCount_;
   18130       return *this;
   18131     }
   18132 
   18133     DescriptorSetVariableDescriptorCountAllocateInfoEXT& setPDescriptorCounts( const uint32_t* pDescriptorCounts_ )
   18134     {
   18135       pDescriptorCounts = pDescriptorCounts_;
   18136       return *this;
   18137     }
   18138 
   18139     operator VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const&() const
   18140     {
   18141       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*>(this);
   18142     }
   18143 
   18144     operator VkDescriptorSetVariableDescriptorCountAllocateInfoEXT &()
   18145     {
   18146       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*>(this);
   18147     }
   18148 
   18149     bool operator==( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const
   18150     {
   18151       return ( sType == rhs.sType )
   18152           && ( pNext == rhs.pNext )
   18153           && ( descriptorSetCount == rhs.descriptorSetCount )
   18154           && ( pDescriptorCounts == rhs.pDescriptorCounts );
   18155     }
   18156 
   18157     bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const
   18158     {
   18159       return !operator==( rhs );
   18160     }
   18161 
   18162   private:
   18163     StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT;
   18164 
   18165   public:
   18166     const void* pNext = nullptr;
   18167     uint32_t descriptorSetCount;
   18168     const uint32_t* pDescriptorCounts;
   18169   };
   18170   static_assert( sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT ), "struct and wrapper have different size!" );
   18171 
   18172   struct DescriptorSetVariableDescriptorCountLayoutSupportEXT
   18173   {
   18174     operator VkDescriptorSetVariableDescriptorCountLayoutSupportEXT const&() const
   18175     {
   18176       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT*>(this);
   18177     }
   18178 
   18179     operator VkDescriptorSetVariableDescriptorCountLayoutSupportEXT &()
   18180     {
   18181       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupportEXT*>(this);
   18182     }
   18183 
   18184     bool operator==( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const
   18185     {
   18186       return ( sType == rhs.sType )
   18187           && ( pNext == rhs.pNext )
   18188           && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount );
   18189     }
   18190 
   18191     bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const
   18192     {
   18193       return !operator==( rhs );
   18194     }
   18195 
   18196   private:
   18197     StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT;
   18198 
   18199   public:
   18200     void* pNext = nullptr;
   18201     uint32_t maxVariableDescriptorCount;
   18202   };
   18203   static_assert( sizeof( DescriptorSetVariableDescriptorCountLayoutSupportEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT ), "struct and wrapper have different size!" );
   18204 
   18205   struct SubpassEndInfoKHR
   18206   {
   18207     SubpassEndInfoKHR(  )
   18208     {
   18209     }
   18210 
   18211     SubpassEndInfoKHR( VkSubpassEndInfoKHR const & rhs )
   18212     {
   18213       memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
   18214     }
   18215 
   18216     SubpassEndInfoKHR& operator=( VkSubpassEndInfoKHR const & rhs )
   18217     {
   18218       memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
   18219       return *this;
   18220     }
   18221     SubpassEndInfoKHR& setPNext( const void* pNext_ )
   18222     {
   18223       pNext = pNext_;
   18224       return *this;
   18225     }
   18226 
   18227     operator VkSubpassEndInfoKHR const&() const
   18228     {
   18229       return *reinterpret_cast<const VkSubpassEndInfoKHR*>(this);
   18230     }
   18231 
   18232     operator VkSubpassEndInfoKHR &()
   18233     {
   18234       return *reinterpret_cast<VkSubpassEndInfoKHR*>(this);
   18235     }
   18236 
   18237     bool operator==( SubpassEndInfoKHR const& rhs ) const
   18238     {
   18239       return ( sType == rhs.sType )
   18240           && ( pNext == rhs.pNext );
   18241     }
   18242 
   18243     bool operator!=( SubpassEndInfoKHR const& rhs ) const
   18244     {
   18245       return !operator==( rhs );
   18246     }
   18247 
   18248   private:
   18249     StructureType sType = StructureType::eSubpassEndInfoKHR;
   18250 
   18251   public:
   18252     const void* pNext = nullptr;
   18253   };
   18254   static_assert( sizeof( SubpassEndInfoKHR ) == sizeof( VkSubpassEndInfoKHR ), "struct and wrapper have different size!" );
   18255 
   18256   struct PipelineVertexInputDivisorStateCreateInfoEXT
   18257   {
   18258     PipelineVertexInputDivisorStateCreateInfoEXT( uint32_t vertexBindingDivisorCount_ = 0,
   18259                                                   const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ = nullptr )
   18260       : vertexBindingDivisorCount( vertexBindingDivisorCount_ )
   18261       , pVertexBindingDivisors( pVertexBindingDivisors_ )
   18262     {
   18263     }
   18264 
   18265     PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
   18266     {
   18267       memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
   18268     }
   18269 
   18270     PipelineVertexInputDivisorStateCreateInfoEXT& operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
   18271     {
   18272       memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
   18273       return *this;
   18274     }
   18275     PipelineVertexInputDivisorStateCreateInfoEXT& setPNext( const void* pNext_ )
   18276     {
   18277       pNext = pNext_;
   18278       return *this;
   18279     }
   18280 
   18281     PipelineVertexInputDivisorStateCreateInfoEXT& setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ )
   18282     {
   18283       vertexBindingDivisorCount = vertexBindingDivisorCount_;
   18284       return *this;
   18285     }
   18286 
   18287     PipelineVertexInputDivisorStateCreateInfoEXT& setPVertexBindingDivisors( const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ )
   18288     {
   18289       pVertexBindingDivisors = pVertexBindingDivisors_;
   18290       return *this;
   18291     }
   18292 
   18293     operator VkPipelineVertexInputDivisorStateCreateInfoEXT const&() const
   18294     {
   18295       return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>(this);
   18296     }
   18297 
   18298     operator VkPipelineVertexInputDivisorStateCreateInfoEXT &()
   18299     {
   18300       return *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(this);
   18301     }
   18302 
   18303     bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const
   18304     {
   18305       return ( sType == rhs.sType )
   18306           && ( pNext == rhs.pNext )
   18307           && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount )
   18308           && ( pVertexBindingDivisors == rhs.pVertexBindingDivisors );
   18309     }
   18310 
   18311     bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const
   18312     {
   18313       return !operator==( rhs );
   18314     }
   18315 
   18316   private:
   18317     StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
   18318 
   18319   public:
   18320     const void* pNext = nullptr;
   18321     uint32_t vertexBindingDivisorCount;
   18322     const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors;
   18323   };
   18324   static_assert( sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), "struct and wrapper have different size!" );
   18325 
   18326   struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
   18327   {
   18328     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = 0 )
   18329       : maxVertexAttribDivisor( maxVertexAttribDivisor_ )
   18330     {
   18331     }
   18332 
   18333     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs )
   18334     {
   18335       memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) );
   18336     }
   18337 
   18338     PhysicalDeviceVertexAttributeDivisorPropertiesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs )
   18339     {
   18340       memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) );
   18341       return *this;
   18342     }
   18343     PhysicalDeviceVertexAttributeDivisorPropertiesEXT& setPNext( void* pNext_ )
   18344     {
   18345       pNext = pNext_;
   18346       return *this;
   18347     }
   18348 
   18349     PhysicalDeviceVertexAttributeDivisorPropertiesEXT& setMaxVertexAttribDivisor( uint32_t maxVertexAttribDivisor_ )
   18350     {
   18351       maxVertexAttribDivisor = maxVertexAttribDivisor_;
   18352       return *this;
   18353     }
   18354 
   18355     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&() const
   18356     {
   18357       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(this);
   18358     }
   18359 
   18360     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &()
   18361     {
   18362       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(this);
   18363     }
   18364 
   18365     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const
   18366     {
   18367       return ( sType == rhs.sType )
   18368           && ( pNext == rhs.pNext )
   18369           && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor );
   18370     }
   18371 
   18372     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const
   18373     {
   18374       return !operator==( rhs );
   18375     }
   18376 
   18377   private:
   18378     StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
   18379 
   18380   public:
   18381     void* pNext = nullptr;
   18382     uint32_t maxVertexAttribDivisor;
   18383   };
   18384   static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), "struct and wrapper have different size!" );
   18385 
   18386   struct PhysicalDevicePCIBusInfoPropertiesEXT
   18387   {
   18388     operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&() const
   18389     {
   18390       return *reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT*>(this);
   18391     }
   18392 
   18393     operator VkPhysicalDevicePCIBusInfoPropertiesEXT &()
   18394     {
   18395       return *reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT*>(this);
   18396     }
   18397 
   18398     bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const
   18399     {
   18400       return ( sType == rhs.sType )
   18401           && ( pNext == rhs.pNext )
   18402           && ( pciDomain == rhs.pciDomain )
   18403           && ( pciBus == rhs.pciBus )
   18404           && ( pciDevice == rhs.pciDevice )
   18405           && ( pciFunction == rhs.pciFunction );
   18406     }
   18407 
   18408     bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const
   18409     {
   18410       return !operator==( rhs );
   18411     }
   18412 
   18413   private:
   18414     StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
   18415 
   18416   public:
   18417     void* pNext = nullptr;
   18418     uint16_t pciDomain;
   18419     uint8_t pciBus;
   18420     uint8_t pciDevice;
   18421     uint8_t pciFunction;
   18422   };
   18423   static_assert( sizeof( PhysicalDevicePCIBusInfoPropertiesEXT ) == sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), "struct and wrapper have different size!" );
   18424 
   18425 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   18426   struct ImportAndroidHardwareBufferInfoANDROID
   18427   {
   18428     ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer* buffer_ = nullptr )
   18429       : buffer( buffer_ )
   18430     {
   18431     }
   18432 
   18433     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
   18434     {
   18435       memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
   18436     }
   18437 
   18438     ImportAndroidHardwareBufferInfoANDROID& operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
   18439     {
   18440       memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
   18441       return *this;
   18442     }
   18443     ImportAndroidHardwareBufferInfoANDROID& setPNext( const void* pNext_ )
   18444     {
   18445       pNext = pNext_;
   18446       return *this;
   18447     }
   18448 
   18449     ImportAndroidHardwareBufferInfoANDROID& setBuffer( struct AHardwareBuffer* buffer_ )
   18450     {
   18451       buffer = buffer_;
   18452       return *this;
   18453     }
   18454 
   18455     operator VkImportAndroidHardwareBufferInfoANDROID const&() const
   18456     {
   18457       return *reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID*>(this);
   18458     }
   18459 
   18460     operator VkImportAndroidHardwareBufferInfoANDROID &()
   18461     {
   18462       return *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID*>(this);
   18463     }
   18464 
   18465     bool operator==( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const
   18466     {
   18467       return ( sType == rhs.sType )
   18468           && ( pNext == rhs.pNext )
   18469           && ( buffer == rhs.buffer );
   18470     }
   18471 
   18472     bool operator!=( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const
   18473     {
   18474       return !operator==( rhs );
   18475     }
   18476 
   18477   private:
   18478     StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID;
   18479 
   18480   public:
   18481     const void* pNext = nullptr;
   18482     struct AHardwareBuffer* buffer;
   18483   };
   18484   static_assert( sizeof( ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" );
   18485 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   18486 
   18487 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   18488   struct AndroidHardwareBufferUsageANDROID
   18489   {
   18490     operator VkAndroidHardwareBufferUsageANDROID const&() const
   18491     {
   18492       return *reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID*>(this);
   18493     }
   18494 
   18495     operator VkAndroidHardwareBufferUsageANDROID &()
   18496     {
   18497       return *reinterpret_cast<VkAndroidHardwareBufferUsageANDROID*>(this);
   18498     }
   18499 
   18500     bool operator==( AndroidHardwareBufferUsageANDROID const& rhs ) const
   18501     {
   18502       return ( sType == rhs.sType )
   18503           && ( pNext == rhs.pNext )
   18504           && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage );
   18505     }
   18506 
   18507     bool operator!=( AndroidHardwareBufferUsageANDROID const& rhs ) const
   18508     {
   18509       return !operator==( rhs );
   18510     }
   18511 
   18512   private:
   18513     StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID;
   18514 
   18515   public:
   18516     void* pNext = nullptr;
   18517     uint64_t androidHardwareBufferUsage;
   18518   };
   18519   static_assert( sizeof( AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), "struct and wrapper have different size!" );
   18520 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   18521 
   18522 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   18523   struct AndroidHardwareBufferPropertiesANDROID
   18524   {
   18525     operator VkAndroidHardwareBufferPropertiesANDROID const&() const
   18526     {
   18527       return *reinterpret_cast<const VkAndroidHardwareBufferPropertiesANDROID*>(this);
   18528     }
   18529 
   18530     operator VkAndroidHardwareBufferPropertiesANDROID &()
   18531     {
   18532       return *reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>(this);
   18533     }
   18534 
   18535     bool operator==( AndroidHardwareBufferPropertiesANDROID const& rhs ) const
   18536     {
   18537       return ( sType == rhs.sType )
   18538           && ( pNext == rhs.pNext )
   18539           && ( allocationSize == rhs.allocationSize )
   18540           && ( memoryTypeBits == rhs.memoryTypeBits );
   18541     }
   18542 
   18543     bool operator!=( AndroidHardwareBufferPropertiesANDROID const& rhs ) const
   18544     {
   18545       return !operator==( rhs );
   18546     }
   18547 
   18548   private:
   18549     StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID;
   18550 
   18551   public:
   18552     void* pNext = nullptr;
   18553     DeviceSize allocationSize;
   18554     uint32_t memoryTypeBits;
   18555   };
   18556   static_assert( sizeof( AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), "struct and wrapper have different size!" );
   18557 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   18558 
   18559 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   18560   struct MemoryGetAndroidHardwareBufferInfoANDROID
   18561   {
   18562     MemoryGetAndroidHardwareBufferInfoANDROID( DeviceMemory memory_ = DeviceMemory() )
   18563       : memory( memory_ )
   18564     {
   18565     }
   18566 
   18567     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
   18568     {
   18569       memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
   18570     }
   18571 
   18572     MemoryGetAndroidHardwareBufferInfoANDROID& operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
   18573     {
   18574       memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
   18575       return *this;
   18576     }
   18577     MemoryGetAndroidHardwareBufferInfoANDROID& setPNext( const void* pNext_ )
   18578     {
   18579       pNext = pNext_;
   18580       return *this;
   18581     }
   18582 
   18583     MemoryGetAndroidHardwareBufferInfoANDROID& setMemory( DeviceMemory memory_ )
   18584     {
   18585       memory = memory_;
   18586       return *this;
   18587     }
   18588 
   18589     operator VkMemoryGetAndroidHardwareBufferInfoANDROID const&() const
   18590     {
   18591       return *reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>(this);
   18592     }
   18593 
   18594     operator VkMemoryGetAndroidHardwareBufferInfoANDROID &()
   18595     {
   18596       return *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID*>(this);
   18597     }
   18598 
   18599     bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const
   18600     {
   18601       return ( sType == rhs.sType )
   18602           && ( pNext == rhs.pNext )
   18603           && ( memory == rhs.memory );
   18604     }
   18605 
   18606     bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const
   18607     {
   18608       return !operator==( rhs );
   18609     }
   18610 
   18611   private:
   18612     StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
   18613 
   18614   public:
   18615     const void* pNext = nullptr;
   18616     DeviceMemory memory;
   18617   };
   18618   static_assert( sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" );
   18619 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   18620 
   18621   struct CommandBufferInheritanceConditionalRenderingInfoEXT
   18622   {
   18623     CommandBufferInheritanceConditionalRenderingInfoEXT( Bool32 conditionalRenderingEnable_ = 0 )
   18624       : conditionalRenderingEnable( conditionalRenderingEnable_ )
   18625     {
   18626     }
   18627 
   18628     CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
   18629     {
   18630       memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
   18631     }
   18632 
   18633     CommandBufferInheritanceConditionalRenderingInfoEXT& operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
   18634     {
   18635       memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
   18636       return *this;
   18637     }
   18638     CommandBufferInheritanceConditionalRenderingInfoEXT& setPNext( const void* pNext_ )
   18639     {
   18640       pNext = pNext_;
   18641       return *this;
   18642     }
   18643 
   18644     CommandBufferInheritanceConditionalRenderingInfoEXT& setConditionalRenderingEnable( Bool32 conditionalRenderingEnable_ )
   18645     {
   18646       conditionalRenderingEnable = conditionalRenderingEnable_;
   18647       return *this;
   18648     }
   18649 
   18650     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const&() const
   18651     {
   18652       return *reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(this);
   18653     }
   18654 
   18655     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &()
   18656     {
   18657       return *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(this);
   18658     }
   18659 
   18660     bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const
   18661     {
   18662       return ( sType == rhs.sType )
   18663           && ( pNext == rhs.pNext )
   18664           && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable );
   18665     }
   18666 
   18667     bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const
   18668     {
   18669       return !operator==( rhs );
   18670     }
   18671 
   18672   private:
   18673     StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
   18674 
   18675   public:
   18676     const void* pNext = nullptr;
   18677     Bool32 conditionalRenderingEnable;
   18678   };
   18679   static_assert( sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) == sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), "struct and wrapper have different size!" );
   18680 
   18681 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   18682   struct ExternalFormatANDROID
   18683   {
   18684     ExternalFormatANDROID( uint64_t externalFormat_ = 0 )
   18685       : externalFormat( externalFormat_ )
   18686     {
   18687     }
   18688 
   18689     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs )
   18690     {
   18691       memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
   18692     }
   18693 
   18694     ExternalFormatANDROID& operator=( VkExternalFormatANDROID const & rhs )
   18695     {
   18696       memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
   18697       return *this;
   18698     }
   18699     ExternalFormatANDROID& setPNext( void* pNext_ )
   18700     {
   18701       pNext = pNext_;
   18702       return *this;
   18703     }
   18704 
   18705     ExternalFormatANDROID& setExternalFormat( uint64_t externalFormat_ )
   18706     {
   18707       externalFormat = externalFormat_;
   18708       return *this;
   18709     }
   18710 
   18711     operator VkExternalFormatANDROID const&() const
   18712     {
   18713       return *reinterpret_cast<const VkExternalFormatANDROID*>(this);
   18714     }
   18715 
   18716     operator VkExternalFormatANDROID &()
   18717     {
   18718       return *reinterpret_cast<VkExternalFormatANDROID*>(this);
   18719     }
   18720 
   18721     bool operator==( ExternalFormatANDROID const& rhs ) const
   18722     {
   18723       return ( sType == rhs.sType )
   18724           && ( pNext == rhs.pNext )
   18725           && ( externalFormat == rhs.externalFormat );
   18726     }
   18727 
   18728     bool operator!=( ExternalFormatANDROID const& rhs ) const
   18729     {
   18730       return !operator==( rhs );
   18731     }
   18732 
   18733   private:
   18734     StructureType sType = StructureType::eExternalFormatANDROID;
   18735 
   18736   public:
   18737     void* pNext = nullptr;
   18738     uint64_t externalFormat;
   18739   };
   18740   static_assert( sizeof( ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), "struct and wrapper have different size!" );
   18741 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   18742 
   18743   struct PhysicalDevice8BitStorageFeaturesKHR
   18744   {
   18745     PhysicalDevice8BitStorageFeaturesKHR( Bool32 storageBuffer8BitAccess_ = 0,
   18746                                           Bool32 uniformAndStorageBuffer8BitAccess_ = 0,
   18747                                           Bool32 storagePushConstant8_ = 0 )
   18748       : storageBuffer8BitAccess( storageBuffer8BitAccess_ )
   18749       , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ )
   18750       , storagePushConstant8( storagePushConstant8_ )
   18751     {
   18752     }
   18753 
   18754     PhysicalDevice8BitStorageFeaturesKHR( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
   18755     {
   18756       memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
   18757     }
   18758 
   18759     PhysicalDevice8BitStorageFeaturesKHR& operator=( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
   18760     {
   18761       memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
   18762       return *this;
   18763     }
   18764     PhysicalDevice8BitStorageFeaturesKHR& setPNext( void* pNext_ )
   18765     {
   18766       pNext = pNext_;
   18767       return *this;
   18768     }
   18769 
   18770     PhysicalDevice8BitStorageFeaturesKHR& setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ )
   18771     {
   18772       storageBuffer8BitAccess = storageBuffer8BitAccess_;
   18773       return *this;
   18774     }
   18775 
   18776     PhysicalDevice8BitStorageFeaturesKHR& setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ )
   18777     {
   18778       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
   18779       return *this;
   18780     }
   18781 
   18782     PhysicalDevice8BitStorageFeaturesKHR& setStoragePushConstant8( Bool32 storagePushConstant8_ )
   18783     {
   18784       storagePushConstant8 = storagePushConstant8_;
   18785       return *this;
   18786     }
   18787 
   18788     operator VkPhysicalDevice8BitStorageFeaturesKHR const&() const
   18789     {
   18790       return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeaturesKHR*>(this);
   18791     }
   18792 
   18793     operator VkPhysicalDevice8BitStorageFeaturesKHR &()
   18794     {
   18795       return *reinterpret_cast<VkPhysicalDevice8BitStorageFeaturesKHR*>(this);
   18796     }
   18797 
   18798     bool operator==( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const
   18799     {
   18800       return ( sType == rhs.sType )
   18801           && ( pNext == rhs.pNext )
   18802           && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess )
   18803           && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess )
   18804           && ( storagePushConstant8 == rhs.storagePushConstant8 );
   18805     }
   18806 
   18807     bool operator!=( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const
   18808     {
   18809       return !operator==( rhs );
   18810     }
   18811 
   18812   private:
   18813     StructureType sType = StructureType::ePhysicalDevice8BitStorageFeaturesKHR;
   18814 
   18815   public:
   18816     void* pNext = nullptr;
   18817     Bool32 storageBuffer8BitAccess;
   18818     Bool32 uniformAndStorageBuffer8BitAccess;
   18819     Bool32 storagePushConstant8;
   18820   };
   18821   static_assert( sizeof( PhysicalDevice8BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice8BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
   18822 
   18823   struct PhysicalDeviceConditionalRenderingFeaturesEXT
   18824   {
   18825     PhysicalDeviceConditionalRenderingFeaturesEXT( Bool32 conditionalRendering_ = 0,
   18826                                                    Bool32 inheritedConditionalRendering_ = 0 )
   18827       : conditionalRendering( conditionalRendering_ )
   18828       , inheritedConditionalRendering( inheritedConditionalRendering_ )
   18829     {
   18830     }
   18831 
   18832     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
   18833     {
   18834       memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
   18835     }
   18836 
   18837     PhysicalDeviceConditionalRenderingFeaturesEXT& operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
   18838     {
   18839       memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
   18840       return *this;
   18841     }
   18842     PhysicalDeviceConditionalRenderingFeaturesEXT& setPNext( void* pNext_ )
   18843     {
   18844       pNext = pNext_;
   18845       return *this;
   18846     }
   18847 
   18848     PhysicalDeviceConditionalRenderingFeaturesEXT& setConditionalRendering( Bool32 conditionalRendering_ )
   18849     {
   18850       conditionalRendering = conditionalRendering_;
   18851       return *this;
   18852     }
   18853 
   18854     PhysicalDeviceConditionalRenderingFeaturesEXT& setInheritedConditionalRendering( Bool32 inheritedConditionalRendering_ )
   18855     {
   18856       inheritedConditionalRendering = inheritedConditionalRendering_;
   18857       return *this;
   18858     }
   18859 
   18860     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const&() const
   18861     {
   18862       return *reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(this);
   18863     }
   18864 
   18865     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &()
   18866     {
   18867       return *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(this);
   18868     }
   18869 
   18870     bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const
   18871     {
   18872       return ( sType == rhs.sType )
   18873           && ( pNext == rhs.pNext )
   18874           && ( conditionalRendering == rhs.conditionalRendering )
   18875           && ( inheritedConditionalRendering == rhs.inheritedConditionalRendering );
   18876     }
   18877 
   18878     bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const
   18879     {
   18880       return !operator==( rhs );
   18881     }
   18882 
   18883   private:
   18884     StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
   18885 
   18886   public:
   18887     void* pNext = nullptr;
   18888     Bool32 conditionalRendering;
   18889     Bool32 inheritedConditionalRendering;
   18890   };
   18891   static_assert( sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) == sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), "struct and wrapper have different size!" );
   18892 
   18893   struct PhysicalDeviceVulkanMemoryModelFeaturesKHR
   18894   {
   18895     operator VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const&() const
   18896     {
   18897       return *reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR*>(this);
   18898     }
   18899 
   18900     operator VkPhysicalDeviceVulkanMemoryModelFeaturesKHR &()
   18901     {
   18902       return *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR*>(this);
   18903     }
   18904 
   18905     bool operator==( PhysicalDeviceVulkanMemoryModelFeaturesKHR const& rhs ) const
   18906     {
   18907       return ( sType == rhs.sType )
   18908           && ( pNext == rhs.pNext )
   18909           && ( vulkanMemoryModel == rhs.vulkanMemoryModel )
   18910           && ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope );
   18911     }
   18912 
   18913     bool operator!=( PhysicalDeviceVulkanMemoryModelFeaturesKHR const& rhs ) const
   18914     {
   18915       return !operator==( rhs );
   18916     }
   18917 
   18918   private:
   18919     StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeaturesKHR;
   18920 
   18921   public:
   18922     void* pNext = nullptr;
   18923     Bool32 vulkanMemoryModel;
   18924     Bool32 vulkanMemoryModelDeviceScope;
   18925   };
   18926   static_assert( sizeof( PhysicalDeviceVulkanMemoryModelFeaturesKHR ) == sizeof( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR ), "struct and wrapper have different size!" );
   18927 
   18928   struct PhysicalDeviceShaderAtomicInt64FeaturesKHR
   18929   {
   18930     PhysicalDeviceShaderAtomicInt64FeaturesKHR( Bool32 shaderBufferInt64Atomics_ = 0,
   18931                                                 Bool32 shaderSharedInt64Atomics_ = 0 )
   18932       : shaderBufferInt64Atomics( shaderBufferInt64Atomics_ )
   18933       , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ )
   18934     {
   18935     }
   18936 
   18937     PhysicalDeviceShaderAtomicInt64FeaturesKHR( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs )
   18938     {
   18939       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) );
   18940     }
   18941 
   18942     PhysicalDeviceShaderAtomicInt64FeaturesKHR& operator=( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs )
   18943     {
   18944       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) );
   18945       return *this;
   18946     }
   18947     PhysicalDeviceShaderAtomicInt64FeaturesKHR& setPNext( void* pNext_ )
   18948     {
   18949       pNext = pNext_;
   18950       return *this;
   18951     }
   18952 
   18953     PhysicalDeviceShaderAtomicInt64FeaturesKHR& setShaderBufferInt64Atomics( Bool32 shaderBufferInt64Atomics_ )
   18954     {
   18955       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
   18956       return *this;
   18957     }
   18958 
   18959     PhysicalDeviceShaderAtomicInt64FeaturesKHR& setShaderSharedInt64Atomics( Bool32 shaderSharedInt64Atomics_ )
   18960     {
   18961       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
   18962       return *this;
   18963     }
   18964 
   18965     operator VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const&() const
   18966     {
   18967       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR*>(this);
   18968     }
   18969 
   18970     operator VkPhysicalDeviceShaderAtomicInt64FeaturesKHR &()
   18971     {
   18972       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR*>(this);
   18973     }
   18974 
   18975     bool operator==( PhysicalDeviceShaderAtomicInt64FeaturesKHR const& rhs ) const
   18976     {
   18977       return ( sType == rhs.sType )
   18978           && ( pNext == rhs.pNext )
   18979           && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics )
   18980           && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics );
   18981     }
   18982 
   18983     bool operator!=( PhysicalDeviceShaderAtomicInt64FeaturesKHR const& rhs ) const
   18984     {
   18985       return !operator==( rhs );
   18986     }
   18987 
   18988   private:
   18989     StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64FeaturesKHR;
   18990 
   18991   public:
   18992     void* pNext = nullptr;
   18993     Bool32 shaderBufferInt64Atomics;
   18994     Bool32 shaderSharedInt64Atomics;
   18995   };
   18996   static_assert( sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR ), "struct and wrapper have different size!" );
   18997 
   18998   struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT
   18999   {
   19000     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( Bool32 vertexAttributeInstanceRateDivisor_ = 0,
   19001                                                      Bool32 vertexAttributeInstanceRateZeroDivisor_ = 0 )
   19002       : vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ )
   19003       , vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ )
   19004     {
   19005     }
   19006 
   19007     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs )
   19008     {
   19009       memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) );
   19010     }
   19011 
   19012     PhysicalDeviceVertexAttributeDivisorFeaturesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs )
   19013     {
   19014       memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) );
   19015       return *this;
   19016     }
   19017     PhysicalDeviceVertexAttributeDivisorFeaturesEXT& setPNext( void* pNext_ )
   19018     {
   19019       pNext = pNext_;
   19020       return *this;
   19021     }
   19022 
   19023     PhysicalDeviceVertexAttributeDivisorFeaturesEXT& setVertexAttributeInstanceRateDivisor( Bool32 vertexAttributeInstanceRateDivisor_ )
   19024     {
   19025       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
   19026       return *this;
   19027     }
   19028 
   19029     PhysicalDeviceVertexAttributeDivisorFeaturesEXT& setVertexAttributeInstanceRateZeroDivisor( Bool32 vertexAttributeInstanceRateZeroDivisor_ )
   19030     {
   19031       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
   19032       return *this;
   19033     }
   19034 
   19035     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const&() const
   19036     {
   19037       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(this);
   19038     }
   19039 
   19040     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &()
   19041     {
   19042       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(this);
   19043     }
   19044 
   19045     bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const
   19046     {
   19047       return ( sType == rhs.sType )
   19048           && ( pNext == rhs.pNext )
   19049           && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor )
   19050           && ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor );
   19051     }
   19052 
   19053     bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const
   19054     {
   19055       return !operator==( rhs );
   19056     }
   19057 
   19058   private:
   19059     StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
   19060 
   19061   public:
   19062     void* pNext = nullptr;
   19063     Bool32 vertexAttributeInstanceRateDivisor;
   19064     Bool32 vertexAttributeInstanceRateZeroDivisor;
   19065   };
   19066   static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ), "struct and wrapper have different size!" );
   19067 
   19068   struct ImageViewASTCDecodeModeEXT
   19069   {
   19070     ImageViewASTCDecodeModeEXT( Format decodeMode_ = Format::eUndefined )
   19071       : decodeMode( decodeMode_ )
   19072     {
   19073     }
   19074 
   19075     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs )
   19076     {
   19077       memcpy( this, &rhs, sizeof( ImageViewASTCDecodeModeEXT ) );
   19078     }
   19079 
   19080     ImageViewASTCDecodeModeEXT& operator=( VkImageViewASTCDecodeModeEXT const & rhs )
   19081     {
   19082       memcpy( this, &rhs, sizeof( ImageViewASTCDecodeModeEXT ) );
   19083       return *this;
   19084     }
   19085     ImageViewASTCDecodeModeEXT& setPNext( const void* pNext_ )
   19086     {
   19087       pNext = pNext_;
   19088       return *this;
   19089     }
   19090 
   19091     ImageViewASTCDecodeModeEXT& setDecodeMode( Format decodeMode_ )
   19092     {
   19093       decodeMode = decodeMode_;
   19094       return *this;
   19095     }
   19096 
   19097     operator VkImageViewASTCDecodeModeEXT const&() const
   19098     {
   19099       return *reinterpret_cast<const VkImageViewASTCDecodeModeEXT*>(this);
   19100     }
   19101 
   19102     operator VkImageViewASTCDecodeModeEXT &()
   19103     {
   19104       return *reinterpret_cast<VkImageViewASTCDecodeModeEXT*>(this);
   19105     }
   19106 
   19107     bool operator==( ImageViewASTCDecodeModeEXT const& rhs ) const
   19108     {
   19109       return ( sType == rhs.sType )
   19110           && ( pNext == rhs.pNext )
   19111           && ( decodeMode == rhs.decodeMode );
   19112     }
   19113 
   19114     bool operator!=( ImageViewASTCDecodeModeEXT const& rhs ) const
   19115     {
   19116       return !operator==( rhs );
   19117     }
   19118 
   19119   private:
   19120     StructureType sType = StructureType::eImageViewAstcDecodeModeEXT;
   19121 
   19122   public:
   19123     const void* pNext = nullptr;
   19124     Format decodeMode;
   19125   };
   19126   static_assert( sizeof( ImageViewASTCDecodeModeEXT ) == sizeof( VkImageViewASTCDecodeModeEXT ), "struct and wrapper have different size!" );
   19127 
   19128   struct PhysicalDeviceASTCDecodeFeaturesEXT
   19129   {
   19130     PhysicalDeviceASTCDecodeFeaturesEXT( Bool32 decodeModeSharedExponent_ = 0 )
   19131       : decodeModeSharedExponent( decodeModeSharedExponent_ )
   19132     {
   19133     }
   19134 
   19135     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs )
   19136     {
   19137       memcpy( this, &rhs, sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) );
   19138     }
   19139 
   19140     PhysicalDeviceASTCDecodeFeaturesEXT& operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs )
   19141     {
   19142       memcpy( this, &rhs, sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) );
   19143       return *this;
   19144     }
   19145     PhysicalDeviceASTCDecodeFeaturesEXT& setPNext( void* pNext_ )
   19146     {
   19147       pNext = pNext_;
   19148       return *this;
   19149     }
   19150 
   19151     PhysicalDeviceASTCDecodeFeaturesEXT& setDecodeModeSharedExponent( Bool32 decodeModeSharedExponent_ )
   19152     {
   19153       decodeModeSharedExponent = decodeModeSharedExponent_;
   19154       return *this;
   19155     }
   19156 
   19157     operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&() const
   19158     {
   19159       return *reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(this);
   19160     }
   19161 
   19162     operator VkPhysicalDeviceASTCDecodeFeaturesEXT &()
   19163     {
   19164       return *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>(this);
   19165     }
   19166 
   19167     bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const
   19168     {
   19169       return ( sType == rhs.sType )
   19170           && ( pNext == rhs.pNext )
   19171           && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent );
   19172     }
   19173 
   19174     bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const
   19175     {
   19176       return !operator==( rhs );
   19177     }
   19178 
   19179   private:
   19180     StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
   19181 
   19182   public:
   19183     void* pNext = nullptr;
   19184     Bool32 decodeModeSharedExponent;
   19185   };
   19186   static_assert( sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) == sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), "struct and wrapper have different size!" );
   19187 
   19188   struct PhysicalDeviceTransformFeedbackFeaturesEXT
   19189   {
   19190     PhysicalDeviceTransformFeedbackFeaturesEXT( Bool32 transformFeedback_ = 0,
   19191                                                 Bool32 geometryStreams_ = 0 )
   19192       : transformFeedback( transformFeedback_ )
   19193       , geometryStreams( geometryStreams_ )
   19194     {
   19195     }
   19196 
   19197     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs )
   19198     {
   19199       memcpy( this, &rhs, sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) );
   19200     }
   19201 
   19202     PhysicalDeviceTransformFeedbackFeaturesEXT& operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs )
   19203     {
   19204       memcpy( this, &rhs, sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) );
   19205       return *this;
   19206     }
   19207     PhysicalDeviceTransformFeedbackFeaturesEXT& setPNext( void* pNext_ )
   19208     {
   19209       pNext = pNext_;
   19210       return *this;
   19211     }
   19212 
   19213     PhysicalDeviceTransformFeedbackFeaturesEXT& setTransformFeedback( Bool32 transformFeedback_ )
   19214     {
   19215       transformFeedback = transformFeedback_;
   19216       return *this;
   19217     }
   19218 
   19219     PhysicalDeviceTransformFeedbackFeaturesEXT& setGeometryStreams( Bool32 geometryStreams_ )
   19220     {
   19221       geometryStreams = geometryStreams_;
   19222       return *this;
   19223     }
   19224 
   19225     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const&() const
   19226     {
   19227       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(this);
   19228     }
   19229 
   19230     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &()
   19231     {
   19232       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(this);
   19233     }
   19234 
   19235     bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const
   19236     {
   19237       return ( sType == rhs.sType )
   19238           && ( pNext == rhs.pNext )
   19239           && ( transformFeedback == rhs.transformFeedback )
   19240           && ( geometryStreams == rhs.geometryStreams );
   19241     }
   19242 
   19243     bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const
   19244     {
   19245       return !operator==( rhs );
   19246     }
   19247 
   19248   private:
   19249     StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
   19250 
   19251   public:
   19252     void* pNext = nullptr;
   19253     Bool32 transformFeedback;
   19254     Bool32 geometryStreams;
   19255   };
   19256   static_assert( sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), "struct and wrapper have different size!" );
   19257 
   19258   struct PhysicalDeviceTransformFeedbackPropertiesEXT
   19259   {
   19260     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&() const
   19261     {
   19262       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(this);
   19263     }
   19264 
   19265     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &()
   19266     {
   19267       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(this);
   19268     }
   19269 
   19270     bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const
   19271     {
   19272       return ( sType == rhs.sType )
   19273           && ( pNext == rhs.pNext )
   19274           && ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams )
   19275           && ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers )
   19276           && ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize )
   19277           && ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize )
   19278           && ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize )
   19279           && ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride )
   19280           && ( transformFeedbackQueries == rhs.transformFeedbackQueries )
   19281           && ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles )
   19282           && ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect )
   19283           && ( transformFeedbackDraw == rhs.transformFeedbackDraw );
   19284     }
   19285 
   19286     bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const
   19287     {
   19288       return !operator==( rhs );
   19289     }
   19290 
   19291   private:
   19292     StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
   19293 
   19294   public:
   19295     void* pNext = nullptr;
   19296     uint32_t maxTransformFeedbackStreams;
   19297     uint32_t maxTransformFeedbackBuffers;
   19298     DeviceSize maxTransformFeedbackBufferSize;
   19299     uint32_t maxTransformFeedbackStreamDataSize;
   19300     uint32_t maxTransformFeedbackBufferDataSize;
   19301     uint32_t maxTransformFeedbackBufferDataStride;
   19302     Bool32 transformFeedbackQueries;
   19303     Bool32 transformFeedbackStreamsLinesTriangles;
   19304     Bool32 transformFeedbackRasterizationStreamSelect;
   19305     Bool32 transformFeedbackDraw;
   19306   };
   19307   static_assert( sizeof( PhysicalDeviceTransformFeedbackPropertiesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), "struct and wrapper have different size!" );
   19308 
   19309   struct PipelineRasterizationStateStreamCreateInfoEXT
   19310   {
   19311     PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateFlagsEXT flags_ = PipelineRasterizationStateStreamCreateFlagsEXT(),
   19312                                                    uint32_t rasterizationStream_ = 0 )
   19313       : flags( flags_ )
   19314       , rasterizationStream( rasterizationStream_ )
   19315     {
   19316     }
   19317 
   19318     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs )
   19319     {
   19320       memcpy( this, &rhs, sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) );
   19321     }
   19322 
   19323     PipelineRasterizationStateStreamCreateInfoEXT& operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs )
   19324     {
   19325       memcpy( this, &rhs, sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) );
   19326       return *this;
   19327     }
   19328     PipelineRasterizationStateStreamCreateInfoEXT& setPNext( const void* pNext_ )
   19329     {
   19330       pNext = pNext_;
   19331       return *this;
   19332     }
   19333 
   19334     PipelineRasterizationStateStreamCreateInfoEXT& setFlags( PipelineRasterizationStateStreamCreateFlagsEXT flags_ )
   19335     {
   19336       flags = flags_;
   19337       return *this;
   19338     }
   19339 
   19340     PipelineRasterizationStateStreamCreateInfoEXT& setRasterizationStream( uint32_t rasterizationStream_ )
   19341     {
   19342       rasterizationStream = rasterizationStream_;
   19343       return *this;
   19344     }
   19345 
   19346     operator VkPipelineRasterizationStateStreamCreateInfoEXT const&() const
   19347     {
   19348       return *reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT*>(this);
   19349     }
   19350 
   19351     operator VkPipelineRasterizationStateStreamCreateInfoEXT &()
   19352     {
   19353       return *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(this);
   19354     }
   19355 
   19356     bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const
   19357     {
   19358       return ( sType == rhs.sType )
   19359           && ( pNext == rhs.pNext )
   19360           && ( flags == rhs.flags )
   19361           && ( rasterizationStream == rhs.rasterizationStream );
   19362     }
   19363 
   19364     bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const
   19365     {
   19366       return !operator==( rhs );
   19367     }
   19368 
   19369   private:
   19370     StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
   19371 
   19372   public:
   19373     const void* pNext = nullptr;
   19374     PipelineRasterizationStateStreamCreateFlagsEXT flags;
   19375     uint32_t rasterizationStream;
   19376   };
   19377   static_assert( sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) == sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), "struct and wrapper have different size!" );
   19378 
   19379   struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV
   19380   {
   19381     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( Bool32 representativeFragmentTest_ = 0 )
   19382       : representativeFragmentTest( representativeFragmentTest_ )
   19383     {
   19384     }
   19385 
   19386     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs )
   19387     {
   19388       memcpy( this, &rhs, sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) );
   19389     }
   19390 
   19391     PhysicalDeviceRepresentativeFragmentTestFeaturesNV& operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs )
   19392     {
   19393       memcpy( this, &rhs, sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) );
   19394       return *this;
   19395     }
   19396     PhysicalDeviceRepresentativeFragmentTestFeaturesNV& setPNext( void* pNext_ )
   19397     {
   19398       pNext = pNext_;
   19399       return *this;
   19400     }
   19401 
   19402     PhysicalDeviceRepresentativeFragmentTestFeaturesNV& setRepresentativeFragmentTest( Bool32 representativeFragmentTest_ )
   19403     {
   19404       representativeFragmentTest = representativeFragmentTest_;
   19405       return *this;
   19406     }
   19407 
   19408     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const&() const
   19409     {
   19410       return *reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(this);
   19411     }
   19412 
   19413     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &()
   19414     {
   19415       return *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(this);
   19416     }
   19417 
   19418     bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const
   19419     {
   19420       return ( sType == rhs.sType )
   19421           && ( pNext == rhs.pNext )
   19422           && ( representativeFragmentTest == rhs.representativeFragmentTest );
   19423     }
   19424 
   19425     bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const
   19426     {
   19427       return !operator==( rhs );
   19428     }
   19429 
   19430   private:
   19431     StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
   19432 
   19433   public:
   19434     void* pNext = nullptr;
   19435     Bool32 representativeFragmentTest;
   19436   };
   19437   static_assert( sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), "struct and wrapper have different size!" );
   19438 
   19439   struct PipelineRepresentativeFragmentTestStateCreateInfoNV
   19440   {
   19441     PipelineRepresentativeFragmentTestStateCreateInfoNV( Bool32 representativeFragmentTestEnable_ = 0 )
   19442       : representativeFragmentTestEnable( representativeFragmentTestEnable_ )
   19443     {
   19444     }
   19445 
   19446     PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs )
   19447     {
   19448       memcpy( this, &rhs, sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) );
   19449     }
   19450 
   19451     PipelineRepresentativeFragmentTestStateCreateInfoNV& operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs )
   19452     {
   19453       memcpy( this, &rhs, sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) );
   19454       return *this;
   19455     }
   19456     PipelineRepresentativeFragmentTestStateCreateInfoNV& setPNext( const void* pNext_ )
   19457     {
   19458       pNext = pNext_;
   19459       return *this;
   19460     }
   19461 
   19462     PipelineRepresentativeFragmentTestStateCreateInfoNV& setRepresentativeFragmentTestEnable( Bool32 representativeFragmentTestEnable_ )
   19463     {
   19464       representativeFragmentTestEnable = representativeFragmentTestEnable_;
   19465       return *this;
   19466     }
   19467 
   19468     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const&() const
   19469     {
   19470       return *reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(this);
   19471     }
   19472 
   19473     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &()
   19474     {
   19475       return *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(this);
   19476     }
   19477 
   19478     bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const
   19479     {
   19480       return ( sType == rhs.sType )
   19481           && ( pNext == rhs.pNext )
   19482           && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable );
   19483     }
   19484 
   19485     bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const
   19486     {
   19487       return !operator==( rhs );
   19488     }
   19489 
   19490   private:
   19491     StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
   19492 
   19493   public:
   19494     const void* pNext = nullptr;
   19495     Bool32 representativeFragmentTestEnable;
   19496   };
   19497   static_assert( sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) == sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), "struct and wrapper have different size!" );
   19498 
   19499   struct PhysicalDeviceExclusiveScissorFeaturesNV
   19500   {
   19501     PhysicalDeviceExclusiveScissorFeaturesNV( Bool32 exclusiveScissor_ = 0 )
   19502       : exclusiveScissor( exclusiveScissor_ )
   19503     {
   19504     }
   19505 
   19506     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs )
   19507     {
   19508       memcpy( this, &rhs, sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) );
   19509     }
   19510 
   19511     PhysicalDeviceExclusiveScissorFeaturesNV& operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs )
   19512     {
   19513       memcpy( this, &rhs, sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) );
   19514       return *this;
   19515     }
   19516     PhysicalDeviceExclusiveScissorFeaturesNV& setPNext( void* pNext_ )
   19517     {
   19518       pNext = pNext_;
   19519       return *this;
   19520     }
   19521 
   19522     PhysicalDeviceExclusiveScissorFeaturesNV& setExclusiveScissor( Bool32 exclusiveScissor_ )
   19523     {
   19524       exclusiveScissor = exclusiveScissor_;
   19525       return *this;
   19526     }
   19527 
   19528     operator VkPhysicalDeviceExclusiveScissorFeaturesNV const&() const
   19529     {
   19530       return *reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV*>(this);
   19531     }
   19532 
   19533     operator VkPhysicalDeviceExclusiveScissorFeaturesNV &()
   19534     {
   19535       return *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV*>(this);
   19536     }
   19537 
   19538     bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const
   19539     {
   19540       return ( sType == rhs.sType )
   19541           && ( pNext == rhs.pNext )
   19542           && ( exclusiveScissor == rhs.exclusiveScissor );
   19543     }
   19544 
   19545     bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const
   19546     {
   19547       return !operator==( rhs );
   19548     }
   19549 
   19550   private:
   19551     StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
   19552 
   19553   public:
   19554     void* pNext = nullptr;
   19555     Bool32 exclusiveScissor;
   19556   };
   19557   static_assert( sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) == sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), "struct and wrapper have different size!" );
   19558 
   19559   struct PipelineViewportExclusiveScissorStateCreateInfoNV
   19560   {
   19561     PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t exclusiveScissorCount_ = 0,
   19562                                                        const Rect2D* pExclusiveScissors_ = nullptr )
   19563       : exclusiveScissorCount( exclusiveScissorCount_ )
   19564       , pExclusiveScissors( pExclusiveScissors_ )
   19565     {
   19566     }
   19567 
   19568     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs )
   19569     {
   19570       memcpy( this, &rhs, sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) );
   19571     }
   19572 
   19573     PipelineViewportExclusiveScissorStateCreateInfoNV& operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs )
   19574     {
   19575       memcpy( this, &rhs, sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) );
   19576       return *this;
   19577     }
   19578     PipelineViewportExclusiveScissorStateCreateInfoNV& setPNext( const void* pNext_ )
   19579     {
   19580       pNext = pNext_;
   19581       return *this;
   19582     }
   19583 
   19584     PipelineViewportExclusiveScissorStateCreateInfoNV& setExclusiveScissorCount( uint32_t exclusiveScissorCount_ )
   19585     {
   19586       exclusiveScissorCount = exclusiveScissorCount_;
   19587       return *this;
   19588     }
   19589 
   19590     PipelineViewportExclusiveScissorStateCreateInfoNV& setPExclusiveScissors( const Rect2D* pExclusiveScissors_ )
   19591     {
   19592       pExclusiveScissors = pExclusiveScissors_;
   19593       return *this;
   19594     }
   19595 
   19596     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&() const
   19597     {
   19598       return *reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(this);
   19599     }
   19600 
   19601     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &()
   19602     {
   19603       return *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(this);
   19604     }
   19605 
   19606     bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const
   19607     {
   19608       return ( sType == rhs.sType )
   19609           && ( pNext == rhs.pNext )
   19610           && ( exclusiveScissorCount == rhs.exclusiveScissorCount )
   19611           && ( pExclusiveScissors == rhs.pExclusiveScissors );
   19612     }
   19613 
   19614     bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const
   19615     {
   19616       return !operator==( rhs );
   19617     }
   19618 
   19619   private:
   19620     StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
   19621 
   19622   public:
   19623     const void* pNext = nullptr;
   19624     uint32_t exclusiveScissorCount;
   19625     const Rect2D* pExclusiveScissors;
   19626   };
   19627   static_assert( sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) == sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), "struct and wrapper have different size!" );
   19628 
   19629   struct PhysicalDeviceCornerSampledImageFeaturesNV
   19630   {
   19631     PhysicalDeviceCornerSampledImageFeaturesNV( Bool32 cornerSampledImage_ = 0 )
   19632       : cornerSampledImage( cornerSampledImage_ )
   19633     {
   19634     }
   19635 
   19636     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs )
   19637     {
   19638       memcpy( this, &rhs, sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) );
   19639     }
   19640 
   19641     PhysicalDeviceCornerSampledImageFeaturesNV& operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs )
   19642     {
   19643       memcpy( this, &rhs, sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) );
   19644       return *this;
   19645     }
   19646     PhysicalDeviceCornerSampledImageFeaturesNV& setPNext( void* pNext_ )
   19647     {
   19648       pNext = pNext_;
   19649       return *this;
   19650     }
   19651 
   19652     PhysicalDeviceCornerSampledImageFeaturesNV& setCornerSampledImage( Bool32 cornerSampledImage_ )
   19653     {
   19654       cornerSampledImage = cornerSampledImage_;
   19655       return *this;
   19656     }
   19657 
   19658     operator VkPhysicalDeviceCornerSampledImageFeaturesNV const&() const
   19659     {
   19660       return *reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV*>(this);
   19661     }
   19662 
   19663     operator VkPhysicalDeviceCornerSampledImageFeaturesNV &()
   19664     {
   19665       return *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV*>(this);
   19666     }
   19667 
   19668     bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const
   19669     {
   19670       return ( sType == rhs.sType )
   19671           && ( pNext == rhs.pNext )
   19672           && ( cornerSampledImage == rhs.cornerSampledImage );
   19673     }
   19674 
   19675     bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const
   19676     {
   19677       return !operator==( rhs );
   19678     }
   19679 
   19680   private:
   19681     StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
   19682 
   19683   public:
   19684     void* pNext = nullptr;
   19685     Bool32 cornerSampledImage;
   19686   };
   19687   static_assert( sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) == sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), "struct and wrapper have different size!" );
   19688 
   19689   struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
   19690   {
   19691     PhysicalDeviceComputeShaderDerivativesFeaturesNV( Bool32 computeDerivativeGroupQuads_ = 0,
   19692                                                       Bool32 computeDerivativeGroupLinear_ = 0 )
   19693       : computeDerivativeGroupQuads( computeDerivativeGroupQuads_ )
   19694       , computeDerivativeGroupLinear( computeDerivativeGroupLinear_ )
   19695     {
   19696     }
   19697 
   19698     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs )
   19699     {
   19700       memcpy( this, &rhs, sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) );
   19701     }
   19702 
   19703     PhysicalDeviceComputeShaderDerivativesFeaturesNV& operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs )
   19704     {
   19705       memcpy( this, &rhs, sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) );
   19706       return *this;
   19707     }
   19708     PhysicalDeviceComputeShaderDerivativesFeaturesNV& setPNext( void* pNext_ )
   19709     {
   19710       pNext = pNext_;
   19711       return *this;
   19712     }
   19713 
   19714     PhysicalDeviceComputeShaderDerivativesFeaturesNV& setComputeDerivativeGroupQuads( Bool32 computeDerivativeGroupQuads_ )
   19715     {
   19716       computeDerivativeGroupQuads = computeDerivativeGroupQuads_;
   19717       return *this;
   19718     }
   19719 
   19720     PhysicalDeviceComputeShaderDerivativesFeaturesNV& setComputeDerivativeGroupLinear( Bool32 computeDerivativeGroupLinear_ )
   19721     {
   19722       computeDerivativeGroupLinear = computeDerivativeGroupLinear_;
   19723       return *this;
   19724     }
   19725 
   19726     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&() const
   19727     {
   19728       return *reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(this);
   19729     }
   19730 
   19731     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &()
   19732     {
   19733       return *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(this);
   19734     }
   19735 
   19736     bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const
   19737     {
   19738       return ( sType == rhs.sType )
   19739           && ( pNext == rhs.pNext )
   19740           && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads )
   19741           && ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear );
   19742     }
   19743 
   19744     bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const
   19745     {
   19746       return !operator==( rhs );
   19747     }
   19748 
   19749   private:
   19750     StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
   19751 
   19752   public:
   19753     void* pNext = nullptr;
   19754     Bool32 computeDerivativeGroupQuads;
   19755     Bool32 computeDerivativeGroupLinear;
   19756   };
   19757   static_assert( sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) == sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ), "struct and wrapper have different size!" );
   19758 
   19759   struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV
   19760   {
   19761     PhysicalDeviceFragmentShaderBarycentricFeaturesNV( Bool32 fragmentShaderBarycentric_ = 0 )
   19762       : fragmentShaderBarycentric( fragmentShaderBarycentric_ )
   19763     {
   19764     }
   19765 
   19766     PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs )
   19767     {
   19768       memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) );
   19769     }
   19770 
   19771     PhysicalDeviceFragmentShaderBarycentricFeaturesNV& operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs )
   19772     {
   19773       memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) );
   19774       return *this;
   19775     }
   19776     PhysicalDeviceFragmentShaderBarycentricFeaturesNV& setPNext( void* pNext_ )
   19777     {
   19778       pNext = pNext_;
   19779       return *this;
   19780     }
   19781 
   19782     PhysicalDeviceFragmentShaderBarycentricFeaturesNV& setFragmentShaderBarycentric( Bool32 fragmentShaderBarycentric_ )
   19783     {
   19784       fragmentShaderBarycentric = fragmentShaderBarycentric_;
   19785       return *this;
   19786     }
   19787 
   19788     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const&() const
   19789     {
   19790       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(this);
   19791     }
   19792 
   19793     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV &()
   19794     {
   19795       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(this);
   19796     }
   19797 
   19798     bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const
   19799     {
   19800       return ( sType == rhs.sType )
   19801           && ( pNext == rhs.pNext )
   19802           && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric );
   19803     }
   19804 
   19805     bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const
   19806     {
   19807       return !operator==( rhs );
   19808     }
   19809 
   19810   private:
   19811     StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV;
   19812 
   19813   public:
   19814     void* pNext = nullptr;
   19815     Bool32 fragmentShaderBarycentric;
   19816   };
   19817   static_assert( sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) == sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ), "struct and wrapper have different size!" );
   19818 
   19819   struct PhysicalDeviceShaderImageFootprintFeaturesNV
   19820   {
   19821     PhysicalDeviceShaderImageFootprintFeaturesNV( Bool32 imageFootprint_ = 0 )
   19822       : imageFootprint( imageFootprint_ )
   19823     {
   19824     }
   19825 
   19826     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs )
   19827     {
   19828       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) );
   19829     }
   19830 
   19831     PhysicalDeviceShaderImageFootprintFeaturesNV& operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs )
   19832     {
   19833       memcpy( this, &rhs, sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) );
   19834       return *this;
   19835     }
   19836     PhysicalDeviceShaderImageFootprintFeaturesNV& setPNext( void* pNext_ )
   19837     {
   19838       pNext = pNext_;
   19839       return *this;
   19840     }
   19841 
   19842     PhysicalDeviceShaderImageFootprintFeaturesNV& setImageFootprint( Bool32 imageFootprint_ )
   19843     {
   19844       imageFootprint = imageFootprint_;
   19845       return *this;
   19846     }
   19847 
   19848     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const&() const
   19849     {
   19850       return *reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(this);
   19851     }
   19852 
   19853     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &()
   19854     {
   19855       return *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(this);
   19856     }
   19857 
   19858     bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const
   19859     {
   19860       return ( sType == rhs.sType )
   19861           && ( pNext == rhs.pNext )
   19862           && ( imageFootprint == rhs.imageFootprint );
   19863     }
   19864 
   19865     bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const
   19866     {
   19867       return !operator==( rhs );
   19868     }
   19869 
   19870   private:
   19871     StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
   19872 
   19873   public:
   19874     void* pNext = nullptr;
   19875     Bool32 imageFootprint;
   19876   };
   19877   static_assert( sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) == sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), "struct and wrapper have different size!" );
   19878 
   19879   struct PhysicalDeviceShadingRateImageFeaturesNV
   19880   {
   19881     PhysicalDeviceShadingRateImageFeaturesNV( Bool32 shadingRateImage_ = 0,
   19882                                               Bool32 shadingRateCoarseSampleOrder_ = 0 )
   19883       : shadingRateImage( shadingRateImage_ )
   19884       , shadingRateCoarseSampleOrder( shadingRateCoarseSampleOrder_ )
   19885     {
   19886     }
   19887 
   19888     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs )
   19889     {
   19890       memcpy( this, &rhs, sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) );
   19891     }
   19892 
   19893     PhysicalDeviceShadingRateImageFeaturesNV& operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs )
   19894     {
   19895       memcpy( this, &rhs, sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) );
   19896       return *this;
   19897     }
   19898     PhysicalDeviceShadingRateImageFeaturesNV& setPNext( void* pNext_ )
   19899     {
   19900       pNext = pNext_;
   19901       return *this;
   19902     }
   19903 
   19904     PhysicalDeviceShadingRateImageFeaturesNV& setShadingRateImage( Bool32 shadingRateImage_ )
   19905     {
   19906       shadingRateImage = shadingRateImage_;
   19907       return *this;
   19908     }
   19909 
   19910     PhysicalDeviceShadingRateImageFeaturesNV& setShadingRateCoarseSampleOrder( Bool32 shadingRateCoarseSampleOrder_ )
   19911     {
   19912       shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_;
   19913       return *this;
   19914     }
   19915 
   19916     operator VkPhysicalDeviceShadingRateImageFeaturesNV const&() const
   19917     {
   19918       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV*>(this);
   19919     }
   19920 
   19921     operator VkPhysicalDeviceShadingRateImageFeaturesNV &()
   19922     {
   19923       return *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV*>(this);
   19924     }
   19925 
   19926     bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const
   19927     {
   19928       return ( sType == rhs.sType )
   19929           && ( pNext == rhs.pNext )
   19930           && ( shadingRateImage == rhs.shadingRateImage )
   19931           && ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder );
   19932     }
   19933 
   19934     bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const
   19935     {
   19936       return !operator==( rhs );
   19937     }
   19938 
   19939   private:
   19940     StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
   19941 
   19942   public:
   19943     void* pNext = nullptr;
   19944     Bool32 shadingRateImage;
   19945     Bool32 shadingRateCoarseSampleOrder;
   19946   };
   19947   static_assert( sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) == sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), "struct and wrapper have different size!" );
   19948 
   19949   struct PhysicalDeviceShadingRateImagePropertiesNV
   19950   {
   19951     operator VkPhysicalDeviceShadingRateImagePropertiesNV const&() const
   19952     {
   19953       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV*>(this);
   19954     }
   19955 
   19956     operator VkPhysicalDeviceShadingRateImagePropertiesNV &()
   19957     {
   19958       return *reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV*>(this);
   19959     }
   19960 
   19961     bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const
   19962     {
   19963       return ( sType == rhs.sType )
   19964           && ( pNext == rhs.pNext )
   19965           && ( shadingRateTexelSize == rhs.shadingRateTexelSize )
   19966           && ( shadingRatePaletteSize == rhs.shadingRatePaletteSize )
   19967           && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples );
   19968     }
   19969 
   19970     bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const
   19971     {
   19972       return !operator==( rhs );
   19973     }
   19974 
   19975   private:
   19976     StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
   19977 
   19978   public:
   19979     void* pNext = nullptr;
   19980     Extent2D shadingRateTexelSize;
   19981     uint32_t shadingRatePaletteSize;
   19982     uint32_t shadingRateMaxCoarseSamples;
   19983   };
   19984   static_assert( sizeof( PhysicalDeviceShadingRateImagePropertiesNV ) == sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), "struct and wrapper have different size!" );
   19985 
   19986   struct PhysicalDeviceMeshShaderFeaturesNV
   19987   {
   19988     PhysicalDeviceMeshShaderFeaturesNV( Bool32 taskShader_ = 0,
   19989                                         Bool32 meshShader_ = 0 )
   19990       : taskShader( taskShader_ )
   19991       , meshShader( meshShader_ )
   19992     {
   19993     }
   19994 
   19995     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs )
   19996     {
   19997       memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderFeaturesNV ) );
   19998     }
   19999 
   20000     PhysicalDeviceMeshShaderFeaturesNV& operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs )
   20001     {
   20002       memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderFeaturesNV ) );
   20003       return *this;
   20004     }
   20005     PhysicalDeviceMeshShaderFeaturesNV& setPNext( void* pNext_ )
   20006     {
   20007       pNext = pNext_;
   20008       return *this;
   20009     }
   20010 
   20011     PhysicalDeviceMeshShaderFeaturesNV& setTaskShader( Bool32 taskShader_ )
   20012     {
   20013       taskShader = taskShader_;
   20014       return *this;
   20015     }
   20016 
   20017     PhysicalDeviceMeshShaderFeaturesNV& setMeshShader( Bool32 meshShader_ )
   20018     {
   20019       meshShader = meshShader_;
   20020       return *this;
   20021     }
   20022 
   20023     operator VkPhysicalDeviceMeshShaderFeaturesNV const&() const
   20024     {
   20025       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV*>(this);
   20026     }
   20027 
   20028     operator VkPhysicalDeviceMeshShaderFeaturesNV &()
   20029     {
   20030       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV*>(this);
   20031     }
   20032 
   20033     bool operator==( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const
   20034     {
   20035       return ( sType == rhs.sType )
   20036           && ( pNext == rhs.pNext )
   20037           && ( taskShader == rhs.taskShader )
   20038           && ( meshShader == rhs.meshShader );
   20039     }
   20040 
   20041     bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const
   20042     {
   20043       return !operator==( rhs );
   20044     }
   20045 
   20046   private:
   20047     StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
   20048 
   20049   public:
   20050     void* pNext = nullptr;
   20051     Bool32 taskShader;
   20052     Bool32 meshShader;
   20053   };
   20054   static_assert( sizeof( PhysicalDeviceMeshShaderFeaturesNV ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), "struct and wrapper have different size!" );
   20055 
   20056   struct PhysicalDeviceMeshShaderPropertiesNV
   20057   {
   20058     PhysicalDeviceMeshShaderPropertiesNV( uint32_t maxDrawMeshTasksCount_ = 0,
   20059                                           uint32_t maxTaskWorkGroupInvocations_ = 0,
   20060                                           std::array<uint32_t,3> const& maxTaskWorkGroupSize_ = { { 0, 0, 0 } },
   20061                                           uint32_t maxTaskTotalMemorySize_ = 0,
   20062                                           uint32_t maxTaskOutputCount_ = 0,
   20063                                           uint32_t maxMeshWorkGroupInvocations_ = 0,
   20064                                           std::array<uint32_t,3> const& maxMeshWorkGroupSize_ = { { 0, 0, 0 } },
   20065                                           uint32_t maxMeshTotalMemorySize_ = 0,
   20066                                           uint32_t maxMeshOutputVertices_ = 0,
   20067                                           uint32_t maxMeshOutputPrimitives_ = 0,
   20068                                           uint32_t maxMeshMultiviewViewCount_ = 0,
   20069                                           uint32_t meshOutputPerVertexGranularity_ = 0,
   20070                                           uint32_t meshOutputPerPrimitiveGranularity_ = 0 )
   20071       : maxDrawMeshTasksCount( maxDrawMeshTasksCount_ )
   20072       , maxTaskWorkGroupInvocations( maxTaskWorkGroupInvocations_ )
   20073       , maxTaskTotalMemorySize( maxTaskTotalMemorySize_ )
   20074       , maxTaskOutputCount( maxTaskOutputCount_ )
   20075       , maxMeshWorkGroupInvocations( maxMeshWorkGroupInvocations_ )
   20076       , maxMeshTotalMemorySize( maxMeshTotalMemorySize_ )
   20077       , maxMeshOutputVertices( maxMeshOutputVertices_ )
   20078       , maxMeshOutputPrimitives( maxMeshOutputPrimitives_ )
   20079       , maxMeshMultiviewViewCount( maxMeshMultiviewViewCount_ )
   20080       , meshOutputPerVertexGranularity( meshOutputPerVertexGranularity_ )
   20081       , meshOutputPerPrimitiveGranularity( meshOutputPerPrimitiveGranularity_ )
   20082     {
   20083       memcpy( &maxTaskWorkGroupSize, maxTaskWorkGroupSize_.data(), 3 * sizeof( uint32_t ) );
   20084       memcpy( &maxMeshWorkGroupSize, maxMeshWorkGroupSize_.data(), 3 * sizeof( uint32_t ) );
   20085     }
   20086 
   20087     PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs )
   20088     {
   20089       memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderPropertiesNV ) );
   20090     }
   20091 
   20092     PhysicalDeviceMeshShaderPropertiesNV& operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs )
   20093     {
   20094       memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderPropertiesNV ) );
   20095       return *this;
   20096     }
   20097     PhysicalDeviceMeshShaderPropertiesNV& setPNext( void* pNext_ )
   20098     {
   20099       pNext = pNext_;
   20100       return *this;
   20101     }
   20102 
   20103     PhysicalDeviceMeshShaderPropertiesNV& setMaxDrawMeshTasksCount( uint32_t maxDrawMeshTasksCount_ )
   20104     {
   20105       maxDrawMeshTasksCount = maxDrawMeshTasksCount_;
   20106       return *this;
   20107     }
   20108 
   20109     PhysicalDeviceMeshShaderPropertiesNV& setMaxTaskWorkGroupInvocations( uint32_t maxTaskWorkGroupInvocations_ )
   20110     {
   20111       maxTaskWorkGroupInvocations = maxTaskWorkGroupInvocations_;
   20112       return *this;
   20113     }
   20114 
   20115     PhysicalDeviceMeshShaderPropertiesNV& setMaxTaskWorkGroupSize( std::array<uint32_t,3> maxTaskWorkGroupSize_ )
   20116     {
   20117       memcpy( &maxTaskWorkGroupSize, maxTaskWorkGroupSize_.data(), 3 * sizeof( uint32_t ) );
   20118       return *this;
   20119     }
   20120 
   20121     PhysicalDeviceMeshShaderPropertiesNV& setMaxTaskTotalMemorySize( uint32_t maxTaskTotalMemorySize_ )
   20122     {
   20123       maxTaskTotalMemorySize = maxTaskTotalMemorySize_;
   20124       return *this;
   20125     }
   20126 
   20127     PhysicalDeviceMeshShaderPropertiesNV& setMaxTaskOutputCount( uint32_t maxTaskOutputCount_ )
   20128     {
   20129       maxTaskOutputCount = maxTaskOutputCount_;
   20130       return *this;
   20131     }
   20132 
   20133     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshWorkGroupInvocations( uint32_t maxMeshWorkGroupInvocations_ )
   20134     {
   20135       maxMeshWorkGroupInvocations = maxMeshWorkGroupInvocations_;
   20136       return *this;
   20137     }
   20138 
   20139     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshWorkGroupSize( std::array<uint32_t,3> maxMeshWorkGroupSize_ )
   20140     {
   20141       memcpy( &maxMeshWorkGroupSize, maxMeshWorkGroupSize_.data(), 3 * sizeof( uint32_t ) );
   20142       return *this;
   20143     }
   20144 
   20145     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshTotalMemorySize( uint32_t maxMeshTotalMemorySize_ )
   20146     {
   20147       maxMeshTotalMemorySize = maxMeshTotalMemorySize_;
   20148       return *this;
   20149     }
   20150 
   20151     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshOutputVertices( uint32_t maxMeshOutputVertices_ )
   20152     {
   20153       maxMeshOutputVertices = maxMeshOutputVertices_;
   20154       return *this;
   20155     }
   20156 
   20157     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshOutputPrimitives( uint32_t maxMeshOutputPrimitives_ )
   20158     {
   20159       maxMeshOutputPrimitives = maxMeshOutputPrimitives_;
   20160       return *this;
   20161     }
   20162 
   20163     PhysicalDeviceMeshShaderPropertiesNV& setMaxMeshMultiviewViewCount( uint32_t maxMeshMultiviewViewCount_ )
   20164     {
   20165       maxMeshMultiviewViewCount = maxMeshMultiviewViewCount_;
   20166       return *this;
   20167     }
   20168 
   20169     PhysicalDeviceMeshShaderPropertiesNV& setMeshOutputPerVertexGranularity( uint32_t meshOutputPerVertexGranularity_ )
   20170     {
   20171       meshOutputPerVertexGranularity = meshOutputPerVertexGranularity_;
   20172       return *this;
   20173     }
   20174 
   20175     PhysicalDeviceMeshShaderPropertiesNV& setMeshOutputPerPrimitiveGranularity( uint32_t meshOutputPerPrimitiveGranularity_ )
   20176     {
   20177       meshOutputPerPrimitiveGranularity = meshOutputPerPrimitiveGranularity_;
   20178       return *this;
   20179     }
   20180 
   20181     operator VkPhysicalDeviceMeshShaderPropertiesNV const&() const
   20182     {
   20183       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV*>(this);
   20184     }
   20185 
   20186     operator VkPhysicalDeviceMeshShaderPropertiesNV &()
   20187     {
   20188       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV*>(this);
   20189     }
   20190 
   20191     bool operator==( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const
   20192     {
   20193       return ( sType == rhs.sType )
   20194           && ( pNext == rhs.pNext )
   20195           && ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount )
   20196           && ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations )
   20197           && ( memcmp( maxTaskWorkGroupSize, rhs.maxTaskWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
   20198           && ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize )
   20199           && ( maxTaskOutputCount == rhs.maxTaskOutputCount )
   20200           && ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations )
   20201           && ( memcmp( maxMeshWorkGroupSize, rhs.maxMeshWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
   20202           && ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize )
   20203           && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices )
   20204           && ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives )
   20205           && ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount )
   20206           && ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity )
   20207           && ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity );
   20208     }
   20209 
   20210     bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const
   20211     {
   20212       return !operator==( rhs );
   20213     }
   20214 
   20215   private:
   20216     StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
   20217 
   20218   public:
   20219     void* pNext = nullptr;
   20220     uint32_t maxDrawMeshTasksCount;
   20221     uint32_t maxTaskWorkGroupInvocations;
   20222     uint32_t maxTaskWorkGroupSize[3];
   20223     uint32_t maxTaskTotalMemorySize;
   20224     uint32_t maxTaskOutputCount;
   20225     uint32_t maxMeshWorkGroupInvocations;
   20226     uint32_t maxMeshWorkGroupSize[3];
   20227     uint32_t maxMeshTotalMemorySize;
   20228     uint32_t maxMeshOutputVertices;
   20229     uint32_t maxMeshOutputPrimitives;
   20230     uint32_t maxMeshMultiviewViewCount;
   20231     uint32_t meshOutputPerVertexGranularity;
   20232     uint32_t meshOutputPerPrimitiveGranularity;
   20233   };
   20234   static_assert( sizeof( PhysicalDeviceMeshShaderPropertiesNV ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), "struct and wrapper have different size!" );
   20235 
   20236   struct GeometryTrianglesNV
   20237   {
   20238     GeometryTrianglesNV( Buffer vertexData_ = Buffer(),
   20239                          DeviceSize vertexOffset_ = 0,
   20240                          uint32_t vertexCount_ = 0,
   20241                          DeviceSize vertexStride_ = 0,
   20242                          Format vertexFormat_ = Format::eUndefined,
   20243                          Buffer indexData_ = Buffer(),
   20244                          DeviceSize indexOffset_ = 0,
   20245                          uint32_t indexCount_ = 0,
   20246                          IndexType indexType_ = IndexType::eUint16,
   20247                          Buffer transformData_ = Buffer(),
   20248                          DeviceSize transformOffset_ = 0 )
   20249       : vertexData( vertexData_ )
   20250       , vertexOffset( vertexOffset_ )
   20251       , vertexCount( vertexCount_ )
   20252       , vertexStride( vertexStride_ )
   20253       , vertexFormat( vertexFormat_ )
   20254       , indexData( indexData_ )
   20255       , indexOffset( indexOffset_ )
   20256       , indexCount( indexCount_ )
   20257       , indexType( indexType_ )
   20258       , transformData( transformData_ )
   20259       , transformOffset( transformOffset_ )
   20260     {
   20261     }
   20262 
   20263     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs )
   20264     {
   20265       memcpy( this, &rhs, sizeof( GeometryTrianglesNV ) );
   20266     }
   20267 
   20268     GeometryTrianglesNV& operator=( VkGeometryTrianglesNV const & rhs )
   20269     {
   20270       memcpy( this, &rhs, sizeof( GeometryTrianglesNV ) );
   20271       return *this;
   20272     }
   20273     GeometryTrianglesNV& setPNext( const void* pNext_ )
   20274     {
   20275       pNext = pNext_;
   20276       return *this;
   20277     }
   20278 
   20279     GeometryTrianglesNV& setVertexData( Buffer vertexData_ )
   20280     {
   20281       vertexData = vertexData_;
   20282       return *this;
   20283     }
   20284 
   20285     GeometryTrianglesNV& setVertexOffset( DeviceSize vertexOffset_ )
   20286     {
   20287       vertexOffset = vertexOffset_;
   20288       return *this;
   20289     }
   20290 
   20291     GeometryTrianglesNV& setVertexCount( uint32_t vertexCount_ )
   20292     {
   20293       vertexCount = vertexCount_;
   20294       return *this;
   20295     }
   20296 
   20297     GeometryTrianglesNV& setVertexStride( DeviceSize vertexStride_ )
   20298     {
   20299       vertexStride = vertexStride_;
   20300       return *this;
   20301     }
   20302 
   20303     GeometryTrianglesNV& setVertexFormat( Format vertexFormat_ )
   20304     {
   20305       vertexFormat = vertexFormat_;
   20306       return *this;
   20307     }
   20308 
   20309     GeometryTrianglesNV& setIndexData( Buffer indexData_ )
   20310     {
   20311       indexData = indexData_;
   20312       return *this;
   20313     }
   20314 
   20315     GeometryTrianglesNV& setIndexOffset( DeviceSize indexOffset_ )
   20316     {
   20317       indexOffset = indexOffset_;
   20318       return *this;
   20319     }
   20320 
   20321     GeometryTrianglesNV& setIndexCount( uint32_t indexCount_ )
   20322     {
   20323       indexCount = indexCount_;
   20324       return *this;
   20325     }
   20326 
   20327     GeometryTrianglesNV& setIndexType( IndexType indexType_ )
   20328     {
   20329       indexType = indexType_;
   20330       return *this;
   20331     }
   20332 
   20333     GeometryTrianglesNV& setTransformData( Buffer transformData_ )
   20334     {
   20335       transformData = transformData_;
   20336       return *this;
   20337     }
   20338 
   20339     GeometryTrianglesNV& setTransformOffset( DeviceSize transformOffset_ )
   20340     {
   20341       transformOffset = transformOffset_;
   20342       return *this;
   20343     }
   20344 
   20345     operator VkGeometryTrianglesNV const&() const
   20346     {
   20347       return *reinterpret_cast<const VkGeometryTrianglesNV*>(this);
   20348     }
   20349 
   20350     operator VkGeometryTrianglesNV &()
   20351     {
   20352       return *reinterpret_cast<VkGeometryTrianglesNV*>(this);
   20353     }
   20354 
   20355     bool operator==( GeometryTrianglesNV const& rhs ) const
   20356     {
   20357       return ( sType == rhs.sType )
   20358           && ( pNext == rhs.pNext )
   20359           && ( vertexData == rhs.vertexData )
   20360           && ( vertexOffset == rhs.vertexOffset )
   20361           && ( vertexCount == rhs.vertexCount )
   20362           && ( vertexStride == rhs.vertexStride )
   20363           && ( vertexFormat == rhs.vertexFormat )
   20364           && ( indexData == rhs.indexData )
   20365           && ( indexOffset == rhs.indexOffset )
   20366           && ( indexCount == rhs.indexCount )
   20367           && ( indexType == rhs.indexType )
   20368           && ( transformData == rhs.transformData )
   20369           && ( transformOffset == rhs.transformOffset );
   20370     }
   20371 
   20372     bool operator!=( GeometryTrianglesNV const& rhs ) const
   20373     {
   20374       return !operator==( rhs );
   20375     }
   20376 
   20377   private:
   20378     StructureType sType = StructureType::eGeometryTrianglesNV;
   20379 
   20380   public:
   20381     const void* pNext = nullptr;
   20382     Buffer vertexData;
   20383     DeviceSize vertexOffset;
   20384     uint32_t vertexCount;
   20385     DeviceSize vertexStride;
   20386     Format vertexFormat;
   20387     Buffer indexData;
   20388     DeviceSize indexOffset;
   20389     uint32_t indexCount;
   20390     IndexType indexType;
   20391     Buffer transformData;
   20392     DeviceSize transformOffset;
   20393   };
   20394   static_assert( sizeof( GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), "struct and wrapper have different size!" );
   20395 
   20396   struct GeometryAABBNV
   20397   {
   20398     GeometryAABBNV( Buffer aabbData_ = Buffer(),
   20399                     uint32_t numAABBs_ = 0,
   20400                     uint32_t stride_ = 0,
   20401                     DeviceSize offset_ = 0 )
   20402       : aabbData( aabbData_ )
   20403       , numAABBs( numAABBs_ )
   20404       , stride( stride_ )
   20405       , offset( offset_ )
   20406     {
   20407     }
   20408 
   20409     GeometryAABBNV( VkGeometryAABBNV const & rhs )
   20410     {
   20411       memcpy( this, &rhs, sizeof( GeometryAABBNV ) );
   20412     }
   20413 
   20414     GeometryAABBNV& operator=( VkGeometryAABBNV const & rhs )
   20415     {
   20416       memcpy( this, &rhs, sizeof( GeometryAABBNV ) );
   20417       return *this;
   20418     }
   20419     GeometryAABBNV& setPNext( const void* pNext_ )
   20420     {
   20421       pNext = pNext_;
   20422       return *this;
   20423     }
   20424 
   20425     GeometryAABBNV& setAabbData( Buffer aabbData_ )
   20426     {
   20427       aabbData = aabbData_;
   20428       return *this;
   20429     }
   20430 
   20431     GeometryAABBNV& setNumAABBs( uint32_t numAABBs_ )
   20432     {
   20433       numAABBs = numAABBs_;
   20434       return *this;
   20435     }
   20436 
   20437     GeometryAABBNV& setStride( uint32_t stride_ )
   20438     {
   20439       stride = stride_;
   20440       return *this;
   20441     }
   20442 
   20443     GeometryAABBNV& setOffset( DeviceSize offset_ )
   20444     {
   20445       offset = offset_;
   20446       return *this;
   20447     }
   20448 
   20449     operator VkGeometryAABBNV const&() const
   20450     {
   20451       return *reinterpret_cast<const VkGeometryAABBNV*>(this);
   20452     }
   20453 
   20454     operator VkGeometryAABBNV &()
   20455     {
   20456       return *reinterpret_cast<VkGeometryAABBNV*>(this);
   20457     }
   20458 
   20459     bool operator==( GeometryAABBNV const& rhs ) const
   20460     {
   20461       return ( sType == rhs.sType )
   20462           && ( pNext == rhs.pNext )
   20463           && ( aabbData == rhs.aabbData )
   20464           && ( numAABBs == rhs.numAABBs )
   20465           && ( stride == rhs.stride )
   20466           && ( offset == rhs.offset );
   20467     }
   20468 
   20469     bool operator!=( GeometryAABBNV const& rhs ) const
   20470     {
   20471       return !operator==( rhs );
   20472     }
   20473 
   20474   private:
   20475     StructureType sType = StructureType::eGeometryAabbNV;
   20476 
   20477   public:
   20478     const void* pNext = nullptr;
   20479     Buffer aabbData;
   20480     uint32_t numAABBs;
   20481     uint32_t stride;
   20482     DeviceSize offset;
   20483   };
   20484   static_assert( sizeof( GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), "struct and wrapper have different size!" );
   20485 
   20486   struct GeometryDataNV
   20487   {
   20488     GeometryDataNV( GeometryTrianglesNV triangles_ = GeometryTrianglesNV(),
   20489                     GeometryAABBNV aabbs_ = GeometryAABBNV() )
   20490       : triangles( triangles_ )
   20491       , aabbs( aabbs_ )
   20492     {
   20493     }
   20494 
   20495     GeometryDataNV( VkGeometryDataNV const & rhs )
   20496     {
   20497       memcpy( this, &rhs, sizeof( GeometryDataNV ) );
   20498     }
   20499 
   20500     GeometryDataNV& operator=( VkGeometryDataNV const & rhs )
   20501     {
   20502       memcpy( this, &rhs, sizeof( GeometryDataNV ) );
   20503       return *this;
   20504     }
   20505     GeometryDataNV& setTriangles( GeometryTrianglesNV triangles_ )
   20506     {
   20507       triangles = triangles_;
   20508       return *this;
   20509     }
   20510 
   20511     GeometryDataNV& setAabbs( GeometryAABBNV aabbs_ )
   20512     {
   20513       aabbs = aabbs_;
   20514       return *this;
   20515     }
   20516 
   20517     operator VkGeometryDataNV const&() const
   20518     {
   20519       return *reinterpret_cast<const VkGeometryDataNV*>(this);
   20520     }
   20521 
   20522     operator VkGeometryDataNV &()
   20523     {
   20524       return *reinterpret_cast<VkGeometryDataNV*>(this);
   20525     }
   20526 
   20527     bool operator==( GeometryDataNV const& rhs ) const
   20528     {
   20529       return ( triangles == rhs.triangles )
   20530           && ( aabbs == rhs.aabbs );
   20531     }
   20532 
   20533     bool operator!=( GeometryDataNV const& rhs ) const
   20534     {
   20535       return !operator==( rhs );
   20536     }
   20537 
   20538     GeometryTrianglesNV triangles;
   20539     GeometryAABBNV aabbs;
   20540   };
   20541   static_assert( sizeof( GeometryDataNV ) == sizeof( VkGeometryDataNV ), "struct and wrapper have different size!" );
   20542 
   20543   struct BindAccelerationStructureMemoryInfoNV
   20544   {
   20545     BindAccelerationStructureMemoryInfoNV( AccelerationStructureNV accelerationStructure_ = AccelerationStructureNV(),
   20546                                            DeviceMemory memory_ = DeviceMemory(),
   20547                                            DeviceSize memoryOffset_ = 0,
   20548                                            uint32_t deviceIndexCount_ = 0,
   20549                                            const uint32_t* pDeviceIndices_ = nullptr )
   20550       : accelerationStructure( accelerationStructure_ )
   20551       , memory( memory_ )
   20552       , memoryOffset( memoryOffset_ )
   20553       , deviceIndexCount( deviceIndexCount_ )
   20554       , pDeviceIndices( pDeviceIndices_ )
   20555     {
   20556     }
   20557 
   20558     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs )
   20559     {
   20560       memcpy( this, &rhs, sizeof( BindAccelerationStructureMemoryInfoNV ) );
   20561     }
   20562 
   20563     BindAccelerationStructureMemoryInfoNV& operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs )
   20564     {
   20565       memcpy( this, &rhs, sizeof( BindAccelerationStructureMemoryInfoNV ) );
   20566       return *this;
   20567     }
   20568     BindAccelerationStructureMemoryInfoNV& setPNext( const void* pNext_ )
   20569     {
   20570       pNext = pNext_;
   20571       return *this;
   20572     }
   20573 
   20574     BindAccelerationStructureMemoryInfoNV& setAccelerationStructure( AccelerationStructureNV accelerationStructure_ )
   20575     {
   20576       accelerationStructure = accelerationStructure_;
   20577       return *this;
   20578     }
   20579 
   20580     BindAccelerationStructureMemoryInfoNV& setMemory( DeviceMemory memory_ )
   20581     {
   20582       memory = memory_;
   20583       return *this;
   20584     }
   20585 
   20586     BindAccelerationStructureMemoryInfoNV& setMemoryOffset( DeviceSize memoryOffset_ )
   20587     {
   20588       memoryOffset = memoryOffset_;
   20589       return *this;
   20590     }
   20591 
   20592     BindAccelerationStructureMemoryInfoNV& setDeviceIndexCount( uint32_t deviceIndexCount_ )
   20593     {
   20594       deviceIndexCount = deviceIndexCount_;
   20595       return *this;
   20596     }
   20597 
   20598     BindAccelerationStructureMemoryInfoNV& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
   20599     {
   20600       pDeviceIndices = pDeviceIndices_;
   20601       return *this;
   20602     }
   20603 
   20604     operator VkBindAccelerationStructureMemoryInfoNV const&() const
   20605     {
   20606       return *reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV*>(this);
   20607     }
   20608 
   20609     operator VkBindAccelerationStructureMemoryInfoNV &()
   20610     {
   20611       return *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV*>(this);
   20612     }
   20613 
   20614     bool operator==( BindAccelerationStructureMemoryInfoNV const& rhs ) const
   20615     {
   20616       return ( sType == rhs.sType )
   20617           && ( pNext == rhs.pNext )
   20618           && ( accelerationStructure == rhs.accelerationStructure )
   20619           && ( memory == rhs.memory )
   20620           && ( memoryOffset == rhs.memoryOffset )
   20621           && ( deviceIndexCount == rhs.deviceIndexCount )
   20622           && ( pDeviceIndices == rhs.pDeviceIndices );
   20623     }
   20624 
   20625     bool operator!=( BindAccelerationStructureMemoryInfoNV const& rhs ) const
   20626     {
   20627       return !operator==( rhs );
   20628     }
   20629 
   20630   private:
   20631     StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV;
   20632 
   20633   public:
   20634     const void* pNext = nullptr;
   20635     AccelerationStructureNV accelerationStructure;
   20636     DeviceMemory memory;
   20637     DeviceSize memoryOffset;
   20638     uint32_t deviceIndexCount;
   20639     const uint32_t* pDeviceIndices;
   20640   };
   20641   static_assert( sizeof( BindAccelerationStructureMemoryInfoNV ) == sizeof( VkBindAccelerationStructureMemoryInfoNV ), "struct and wrapper have different size!" );
   20642 
   20643   struct WriteDescriptorSetAccelerationStructureNV
   20644   {
   20645     WriteDescriptorSetAccelerationStructureNV( uint32_t accelerationStructureCount_ = 0,
   20646                                                const AccelerationStructureNV* pAccelerationStructures_ = nullptr )
   20647       : accelerationStructureCount( accelerationStructureCount_ )
   20648       , pAccelerationStructures( pAccelerationStructures_ )
   20649     {
   20650     }
   20651 
   20652     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs )
   20653     {
   20654       memcpy( this, &rhs, sizeof( WriteDescriptorSetAccelerationStructureNV ) );
   20655     }
   20656 
   20657     WriteDescriptorSetAccelerationStructureNV& operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs )
   20658     {
   20659       memcpy( this, &rhs, sizeof( WriteDescriptorSetAccelerationStructureNV ) );
   20660       return *this;
   20661     }
   20662     WriteDescriptorSetAccelerationStructureNV& setPNext( const void* pNext_ )
   20663     {
   20664       pNext = pNext_;
   20665       return *this;
   20666     }
   20667 
   20668     WriteDescriptorSetAccelerationStructureNV& setAccelerationStructureCount( uint32_t accelerationStructureCount_ )
   20669     {
   20670       accelerationStructureCount = accelerationStructureCount_;
   20671       return *this;
   20672     }
   20673 
   20674     WriteDescriptorSetAccelerationStructureNV& setPAccelerationStructures( const AccelerationStructureNV* pAccelerationStructures_ )
   20675     {
   20676       pAccelerationStructures = pAccelerationStructures_;
   20677       return *this;
   20678     }
   20679 
   20680     operator VkWriteDescriptorSetAccelerationStructureNV const&() const
   20681     {
   20682       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV*>(this);
   20683     }
   20684 
   20685     operator VkWriteDescriptorSetAccelerationStructureNV &()
   20686     {
   20687       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV*>(this);
   20688     }
   20689 
   20690     bool operator==( WriteDescriptorSetAccelerationStructureNV const& rhs ) const
   20691     {
   20692       return ( sType == rhs.sType )
   20693           && ( pNext == rhs.pNext )
   20694           && ( accelerationStructureCount == rhs.accelerationStructureCount )
   20695           && ( pAccelerationStructures == rhs.pAccelerationStructures );
   20696     }
   20697 
   20698     bool operator!=( WriteDescriptorSetAccelerationStructureNV const& rhs ) const
   20699     {
   20700       return !operator==( rhs );
   20701     }
   20702 
   20703   private:
   20704     StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV;
   20705 
   20706   public:
   20707     const void* pNext = nullptr;
   20708     uint32_t accelerationStructureCount;
   20709     const AccelerationStructureNV* pAccelerationStructures;
   20710   };
   20711   static_assert( sizeof( WriteDescriptorSetAccelerationStructureNV ) == sizeof( VkWriteDescriptorSetAccelerationStructureNV ), "struct and wrapper have different size!" );
   20712 
   20713   struct PhysicalDeviceRayTracingPropertiesNV
   20714   {
   20715     PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_ = 0,
   20716                                           uint32_t maxRecursionDepth_ = 0,
   20717                                           uint32_t maxShaderGroupStride_ = 0,
   20718                                           uint32_t shaderGroupBaseAlignment_ = 0,
   20719                                           uint64_t maxGeometryCount_ = 0,
   20720                                           uint64_t maxInstanceCount_ = 0,
   20721                                           uint64_t maxTriangleCount_ = 0,
   20722                                           uint32_t maxDescriptorSetAccelerationStructures_ = 0 )
   20723       : shaderGroupHandleSize( shaderGroupHandleSize_ )
   20724       , maxRecursionDepth( maxRecursionDepth_ )
   20725       , maxShaderGroupStride( maxShaderGroupStride_ )
   20726       , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ )
   20727       , maxGeometryCount( maxGeometryCount_ )
   20728       , maxInstanceCount( maxInstanceCount_ )
   20729       , maxTriangleCount( maxTriangleCount_ )
   20730       , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ )
   20731     {
   20732     }
   20733 
   20734     PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs )
   20735     {
   20736       memcpy( this, &rhs, sizeof( PhysicalDeviceRayTracingPropertiesNV ) );
   20737     }
   20738 
   20739     PhysicalDeviceRayTracingPropertiesNV& operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs )
   20740     {
   20741       memcpy( this, &rhs, sizeof( PhysicalDeviceRayTracingPropertiesNV ) );
   20742       return *this;
   20743     }
   20744     PhysicalDeviceRayTracingPropertiesNV& setPNext( void* pNext_ )
   20745     {
   20746       pNext = pNext_;
   20747       return *this;
   20748     }
   20749 
   20750     PhysicalDeviceRayTracingPropertiesNV& setShaderGroupHandleSize( uint32_t shaderGroupHandleSize_ )
   20751     {
   20752       shaderGroupHandleSize = shaderGroupHandleSize_;
   20753       return *this;
   20754     }
   20755 
   20756     PhysicalDeviceRayTracingPropertiesNV& setMaxRecursionDepth( uint32_t maxRecursionDepth_ )
   20757     {
   20758       maxRecursionDepth = maxRecursionDepth_;
   20759       return *this;
   20760     }
   20761 
   20762     PhysicalDeviceRayTracingPropertiesNV& setMaxShaderGroupStride( uint32_t maxShaderGroupStride_ )
   20763     {
   20764       maxShaderGroupStride = maxShaderGroupStride_;
   20765       return *this;
   20766     }
   20767 
   20768     PhysicalDeviceRayTracingPropertiesNV& setShaderGroupBaseAlignment( uint32_t shaderGroupBaseAlignment_ )
   20769     {
   20770       shaderGroupBaseAlignment = shaderGroupBaseAlignment_;
   20771       return *this;
   20772     }
   20773 
   20774     PhysicalDeviceRayTracingPropertiesNV& setMaxGeometryCount( uint64_t maxGeometryCount_ )
   20775     {
   20776       maxGeometryCount = maxGeometryCount_;
   20777       return *this;
   20778     }
   20779 
   20780     PhysicalDeviceRayTracingPropertiesNV& setMaxInstanceCount( uint64_t maxInstanceCount_ )
   20781     {
   20782       maxInstanceCount = maxInstanceCount_;
   20783       return *this;
   20784     }
   20785 
   20786     PhysicalDeviceRayTracingPropertiesNV& setMaxTriangleCount( uint64_t maxTriangleCount_ )
   20787     {
   20788       maxTriangleCount = maxTriangleCount_;
   20789       return *this;
   20790     }
   20791 
   20792     PhysicalDeviceRayTracingPropertiesNV& setMaxDescriptorSetAccelerationStructures( uint32_t maxDescriptorSetAccelerationStructures_ )
   20793     {
   20794       maxDescriptorSetAccelerationStructures = maxDescriptorSetAccelerationStructures_;
   20795       return *this;
   20796     }
   20797 
   20798     operator VkPhysicalDeviceRayTracingPropertiesNV const&() const
   20799     {
   20800       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV*>(this);
   20801     }
   20802 
   20803     operator VkPhysicalDeviceRayTracingPropertiesNV &()
   20804     {
   20805       return *reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV*>(this);
   20806     }
   20807 
   20808     bool operator==( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const
   20809     {
   20810       return ( sType == rhs.sType )
   20811           && ( pNext == rhs.pNext )
   20812           && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize )
   20813           && ( maxRecursionDepth == rhs.maxRecursionDepth )
   20814           && ( maxShaderGroupStride == rhs.maxShaderGroupStride )
   20815           && ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment )
   20816           && ( maxGeometryCount == rhs.maxGeometryCount )
   20817           && ( maxInstanceCount == rhs.maxInstanceCount )
   20818           && ( maxTriangleCount == rhs.maxTriangleCount )
   20819           && ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures );
   20820     }
   20821 
   20822     bool operator!=( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const
   20823     {
   20824       return !operator==( rhs );
   20825     }
   20826 
   20827   private:
   20828     StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
   20829 
   20830   public:
   20831     void* pNext = nullptr;
   20832     uint32_t shaderGroupHandleSize;
   20833     uint32_t maxRecursionDepth;
   20834     uint32_t maxShaderGroupStride;
   20835     uint32_t shaderGroupBaseAlignment;
   20836     uint64_t maxGeometryCount;
   20837     uint64_t maxInstanceCount;
   20838     uint64_t maxTriangleCount;
   20839     uint32_t maxDescriptorSetAccelerationStructures;
   20840   };
   20841   static_assert( sizeof( PhysicalDeviceRayTracingPropertiesNV ) == sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), "struct and wrapper have different size!" );
   20842 
   20843   struct PhysicalDeviceImageDrmFormatModifierInfoEXT
   20844   {
   20845     PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_ = 0,
   20846                                                  SharingMode sharingMode_ = SharingMode::eExclusive,
   20847                                                  uint32_t queueFamilyIndexCount_ = 0,
   20848                                                  const uint32_t* pQueueFamilyIndices_ = nullptr )
   20849       : drmFormatModifier( drmFormatModifier_ )
   20850       , sharingMode( sharingMode_ )
   20851       , queueFamilyIndexCount( queueFamilyIndexCount_ )
   20852       , pQueueFamilyIndices( pQueueFamilyIndices_ )
   20853     {
   20854     }
   20855 
   20856     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs )
   20857     {
   20858       memcpy( this, &rhs, sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) );
   20859     }
   20860 
   20861     PhysicalDeviceImageDrmFormatModifierInfoEXT& operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs )
   20862     {
   20863       memcpy( this, &rhs, sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) );
   20864       return *this;
   20865     }
   20866     PhysicalDeviceImageDrmFormatModifierInfoEXT& setPNext( const void* pNext_ )
   20867     {
   20868       pNext = pNext_;
   20869       return *this;
   20870     }
   20871 
   20872     PhysicalDeviceImageDrmFormatModifierInfoEXT& setDrmFormatModifier( uint64_t drmFormatModifier_ )
   20873     {
   20874       drmFormatModifier = drmFormatModifier_;
   20875       return *this;
   20876     }
   20877 
   20878     PhysicalDeviceImageDrmFormatModifierInfoEXT& setSharingMode( SharingMode sharingMode_ )
   20879     {
   20880       sharingMode = sharingMode_;
   20881       return *this;
   20882     }
   20883 
   20884     PhysicalDeviceImageDrmFormatModifierInfoEXT& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
   20885     {
   20886       queueFamilyIndexCount = queueFamilyIndexCount_;
   20887       return *this;
   20888     }
   20889 
   20890     PhysicalDeviceImageDrmFormatModifierInfoEXT& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
   20891     {
   20892       pQueueFamilyIndices = pQueueFamilyIndices_;
   20893       return *this;
   20894     }
   20895 
   20896     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&() const
   20897     {
   20898       return *reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(this);
   20899     }
   20900 
   20901     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &()
   20902     {
   20903       return *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(this);
   20904     }
   20905 
   20906     bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const
   20907     {
   20908       return ( sType == rhs.sType )
   20909           && ( pNext == rhs.pNext )
   20910           && ( drmFormatModifier == rhs.drmFormatModifier )
   20911           && ( sharingMode == rhs.sharingMode )
   20912           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
   20913           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
   20914     }
   20915 
   20916     bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const
   20917     {
   20918       return !operator==( rhs );
   20919     }
   20920 
   20921   private:
   20922     StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
   20923 
   20924   public:
   20925     const void* pNext = nullptr;
   20926     uint64_t drmFormatModifier;
   20927     SharingMode sharingMode;
   20928     uint32_t queueFamilyIndexCount;
   20929     const uint32_t* pQueueFamilyIndices;
   20930   };
   20931   static_assert( sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) == sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), "struct and wrapper have different size!" );
   20932 
   20933   struct ImageDrmFormatModifierListCreateInfoEXT
   20934   {
   20935     ImageDrmFormatModifierListCreateInfoEXT( uint32_t drmFormatModifierCount_ = 0,
   20936                                              const uint64_t* pDrmFormatModifiers_ = nullptr )
   20937       : drmFormatModifierCount( drmFormatModifierCount_ )
   20938       , pDrmFormatModifiers( pDrmFormatModifiers_ )
   20939     {
   20940     }
   20941 
   20942     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs )
   20943     {
   20944       memcpy( this, &rhs, sizeof( ImageDrmFormatModifierListCreateInfoEXT ) );
   20945     }
   20946 
   20947     ImageDrmFormatModifierListCreateInfoEXT& operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs )
   20948     {
   20949       memcpy( this, &rhs, sizeof( ImageDrmFormatModifierListCreateInfoEXT ) );
   20950       return *this;
   20951     }
   20952     ImageDrmFormatModifierListCreateInfoEXT& setPNext( const void* pNext_ )
   20953     {
   20954       pNext = pNext_;
   20955       return *this;
   20956     }
   20957 
   20958     ImageDrmFormatModifierListCreateInfoEXT& setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ )
   20959     {
   20960       drmFormatModifierCount = drmFormatModifierCount_;
   20961       return *this;
   20962     }
   20963 
   20964     ImageDrmFormatModifierListCreateInfoEXT& setPDrmFormatModifiers( const uint64_t* pDrmFormatModifiers_ )
   20965     {
   20966       pDrmFormatModifiers = pDrmFormatModifiers_;
   20967       return *this;
   20968     }
   20969 
   20970     operator VkImageDrmFormatModifierListCreateInfoEXT const&() const
   20971     {
   20972       return *reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT*>(this);
   20973     }
   20974 
   20975     operator VkImageDrmFormatModifierListCreateInfoEXT &()
   20976     {
   20977       return *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(this);
   20978     }
   20979 
   20980     bool operator==( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const
   20981     {
   20982       return ( sType == rhs.sType )
   20983           && ( pNext == rhs.pNext )
   20984           && ( drmFormatModifierCount == rhs.drmFormatModifierCount )
   20985           && ( pDrmFormatModifiers == rhs.pDrmFormatModifiers );
   20986     }
   20987 
   20988     bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const
   20989     {
   20990       return !operator==( rhs );
   20991     }
   20992 
   20993   private:
   20994     StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
   20995 
   20996   public:
   20997     const void* pNext = nullptr;
   20998     uint32_t drmFormatModifierCount;
   20999     const uint64_t* pDrmFormatModifiers;
   21000   };
   21001   static_assert( sizeof( ImageDrmFormatModifierListCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), "struct and wrapper have different size!" );
   21002 
   21003   struct ImageDrmFormatModifierExplicitCreateInfoEXT
   21004   {
   21005     ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_ = 0,
   21006                                                  uint32_t drmFormatModifierPlaneCount_ = 0,
   21007                                                  const SubresourceLayout* pPlaneLayouts_ = nullptr )
   21008       : drmFormatModifier( drmFormatModifier_ )
   21009       , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ )
   21010       , pPlaneLayouts( pPlaneLayouts_ )
   21011     {
   21012     }
   21013 
   21014     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs )
   21015     {
   21016       memcpy( this, &rhs, sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) );
   21017     }
   21018 
   21019     ImageDrmFormatModifierExplicitCreateInfoEXT& operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs )
   21020     {
   21021       memcpy( this, &rhs, sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) );
   21022       return *this;
   21023     }
   21024     ImageDrmFormatModifierExplicitCreateInfoEXT& setPNext( const void* pNext_ )
   21025     {
   21026       pNext = pNext_;
   21027       return *this;
   21028     }
   21029 
   21030     ImageDrmFormatModifierExplicitCreateInfoEXT& setDrmFormatModifier( uint64_t drmFormatModifier_ )
   21031     {
   21032       drmFormatModifier = drmFormatModifier_;
   21033       return *this;
   21034     }
   21035 
   21036     ImageDrmFormatModifierExplicitCreateInfoEXT& setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ )
   21037     {
   21038       drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_;
   21039       return *this;
   21040     }
   21041 
   21042     ImageDrmFormatModifierExplicitCreateInfoEXT& setPPlaneLayouts( const SubresourceLayout* pPlaneLayouts_ )
   21043     {
   21044       pPlaneLayouts = pPlaneLayouts_;
   21045       return *this;
   21046     }
   21047 
   21048     operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&() const
   21049     {
   21050       return *reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT*>(this);
   21051     }
   21052 
   21053     operator VkImageDrmFormatModifierExplicitCreateInfoEXT &()
   21054     {
   21055       return *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(this);
   21056     }
   21057 
   21058     bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const
   21059     {
   21060       return ( sType == rhs.sType )
   21061           && ( pNext == rhs.pNext )
   21062           && ( drmFormatModifier == rhs.drmFormatModifier )
   21063           && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount )
   21064           && ( pPlaneLayouts == rhs.pPlaneLayouts );
   21065     }
   21066 
   21067     bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const
   21068     {
   21069       return !operator==( rhs );
   21070     }
   21071 
   21072   private:
   21073     StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
   21074 
   21075   public:
   21076     const void* pNext = nullptr;
   21077     uint64_t drmFormatModifier;
   21078     uint32_t drmFormatModifierPlaneCount;
   21079     const SubresourceLayout* pPlaneLayouts;
   21080   };
   21081   static_assert( sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), "struct and wrapper have different size!" );
   21082 
   21083   struct ImageDrmFormatModifierPropertiesEXT
   21084   {
   21085     operator VkImageDrmFormatModifierPropertiesEXT const&() const
   21086     {
   21087       return *reinterpret_cast<const VkImageDrmFormatModifierPropertiesEXT*>(this);
   21088     }
   21089 
   21090     operator VkImageDrmFormatModifierPropertiesEXT &()
   21091     {
   21092       return *reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT*>(this);
   21093     }
   21094 
   21095     bool operator==( ImageDrmFormatModifierPropertiesEXT const& rhs ) const
   21096     {
   21097       return ( sType == rhs.sType )
   21098           && ( pNext == rhs.pNext )
   21099           && ( drmFormatModifier == rhs.drmFormatModifier );
   21100     }
   21101 
   21102     bool operator!=( ImageDrmFormatModifierPropertiesEXT const& rhs ) const
   21103     {
   21104       return !operator==( rhs );
   21105     }
   21106 
   21107   private:
   21108     StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT;
   21109 
   21110   public:
   21111     void* pNext = nullptr;
   21112     uint64_t drmFormatModifier;
   21113   };
   21114   static_assert( sizeof( ImageDrmFormatModifierPropertiesEXT ) == sizeof( VkImageDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" );
   21115 
   21116   enum class SubpassContents
   21117   {
   21118     eInline = VK_SUBPASS_CONTENTS_INLINE,
   21119     eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
   21120   };
   21121 
   21122   struct SubpassBeginInfoKHR
   21123   {
   21124     SubpassBeginInfoKHR( SubpassContents contents_ = SubpassContents::eInline )
   21125       : contents( contents_ )
   21126     {
   21127     }
   21128 
   21129     SubpassBeginInfoKHR( VkSubpassBeginInfoKHR const & rhs )
   21130     {
   21131       memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
   21132     }
   21133 
   21134     SubpassBeginInfoKHR& operator=( VkSubpassBeginInfoKHR const & rhs )
   21135     {
   21136       memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
   21137       return *this;
   21138     }
   21139     SubpassBeginInfoKHR& setPNext( const void* pNext_ )
   21140     {
   21141       pNext = pNext_;
   21142       return *this;
   21143     }
   21144 
   21145     SubpassBeginInfoKHR& setContents( SubpassContents contents_ )
   21146     {
   21147       contents = contents_;
   21148       return *this;
   21149     }
   21150 
   21151     operator VkSubpassBeginInfoKHR const&() const
   21152     {
   21153       return *reinterpret_cast<const VkSubpassBeginInfoKHR*>(this);
   21154     }
   21155 
   21156     operator VkSubpassBeginInfoKHR &()
   21157     {
   21158       return *reinterpret_cast<VkSubpassBeginInfoKHR*>(this);
   21159     }
   21160 
   21161     bool operator==( SubpassBeginInfoKHR const& rhs ) const
   21162     {
   21163       return ( sType == rhs.sType )
   21164           && ( pNext == rhs.pNext )
   21165           && ( contents == rhs.contents );
   21166     }
   21167 
   21168     bool operator!=( SubpassBeginInfoKHR const& rhs ) const
   21169     {
   21170       return !operator==( rhs );
   21171     }
   21172 
   21173   private:
   21174     StructureType sType = StructureType::eSubpassBeginInfoKHR;
   21175 
   21176   public:
   21177     const void* pNext = nullptr;
   21178     SubpassContents contents;
   21179   };
   21180   static_assert( sizeof( SubpassBeginInfoKHR ) == sizeof( VkSubpassBeginInfoKHR ), "struct and wrapper have different size!" );
   21181 
   21182   struct PresentInfoKHR
   21183   {
   21184     PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0,
   21185                     const Semaphore* pWaitSemaphores_ = nullptr,
   21186                     uint32_t swapchainCount_ = 0,
   21187                     const SwapchainKHR* pSwapchains_ = nullptr,
   21188                     const uint32_t* pImageIndices_ = nullptr,
   21189                     Result* pResults_ = nullptr )
   21190       : waitSemaphoreCount( waitSemaphoreCount_ )
   21191       , pWaitSemaphores( pWaitSemaphores_ )
   21192       , swapchainCount( swapchainCount_ )
   21193       , pSwapchains( pSwapchains_ )
   21194       , pImageIndices( pImageIndices_ )
   21195       , pResults( pResults_ )
   21196     {
   21197     }
   21198 
   21199     PresentInfoKHR( VkPresentInfoKHR const & rhs )
   21200     {
   21201       memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
   21202     }
   21203 
   21204     PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
   21205     {
   21206       memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
   21207       return *this;
   21208     }
   21209     PresentInfoKHR& setPNext( const void* pNext_ )
   21210     {
   21211       pNext = pNext_;
   21212       return *this;
   21213     }
   21214 
   21215     PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
   21216     {
   21217       waitSemaphoreCount = waitSemaphoreCount_;
   21218       return *this;
   21219     }
   21220 
   21221     PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
   21222     {
   21223       pWaitSemaphores = pWaitSemaphores_;
   21224       return *this;
   21225     }
   21226 
   21227     PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
   21228     {
   21229       swapchainCount = swapchainCount_;
   21230       return *this;
   21231     }
   21232 
   21233     PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
   21234     {
   21235       pSwapchains = pSwapchains_;
   21236       return *this;
   21237     }
   21238 
   21239     PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
   21240     {
   21241       pImageIndices = pImageIndices_;
   21242       return *this;
   21243     }
   21244 
   21245     PresentInfoKHR& setPResults( Result* pResults_ )
   21246     {
   21247       pResults = pResults_;
   21248       return *this;
   21249     }
   21250 
   21251     operator VkPresentInfoKHR const&() const
   21252     {
   21253       return *reinterpret_cast<const VkPresentInfoKHR*>(this);
   21254     }
   21255 
   21256     operator VkPresentInfoKHR &()
   21257     {
   21258       return *reinterpret_cast<VkPresentInfoKHR*>(this);
   21259     }
   21260 
   21261     bool operator==( PresentInfoKHR const& rhs ) const
   21262     {
   21263       return ( sType == rhs.sType )
   21264           && ( pNext == rhs.pNext )
   21265           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
   21266           && ( pWaitSemaphores == rhs.pWaitSemaphores )
   21267           && ( swapchainCount == rhs.swapchainCount )
   21268           && ( pSwapchains == rhs.pSwapchains )
   21269           && ( pImageIndices == rhs.pImageIndices )
   21270           && ( pResults == rhs.pResults );
   21271     }
   21272 
   21273     bool operator!=( PresentInfoKHR const& rhs ) const
   21274     {
   21275       return !operator==( rhs );
   21276     }
   21277 
   21278   private:
   21279     StructureType sType = StructureType::ePresentInfoKHR;
   21280 
   21281   public:
   21282     const void* pNext = nullptr;
   21283     uint32_t waitSemaphoreCount;
   21284     const Semaphore* pWaitSemaphores;
   21285     uint32_t swapchainCount;
   21286     const SwapchainKHR* pSwapchains;
   21287     const uint32_t* pImageIndices;
   21288     Result* pResults;
   21289   };
   21290   static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
   21291 
   21292   enum class DynamicState
   21293   {
   21294     eViewport = VK_DYNAMIC_STATE_VIEWPORT,
   21295     eScissor = VK_DYNAMIC_STATE_SCISSOR,
   21296     eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
   21297     eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
   21298     eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
   21299     eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
   21300     eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
   21301     eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
   21302     eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
   21303     eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
   21304     eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
   21305     eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT,
   21306     eViewportShadingRatePaletteNV = VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV,
   21307     eViewportCoarseSampleOrderNV = VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV,
   21308     eExclusiveScissorNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
   21309   };
   21310 
   21311   struct PipelineDynamicStateCreateInfo
   21312   {
   21313     PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(),
   21314                                     uint32_t dynamicStateCount_ = 0,
   21315                                     const DynamicState* pDynamicStates_ = nullptr )
   21316       : flags( flags_ )
   21317       , dynamicStateCount( dynamicStateCount_ )
   21318       , pDynamicStates( pDynamicStates_ )
   21319     {
   21320     }
   21321 
   21322     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
   21323     {
   21324       memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
   21325     }
   21326 
   21327     PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
   21328     {
   21329       memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
   21330       return *this;
   21331     }
   21332     PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
   21333     {
   21334       pNext = pNext_;
   21335       return *this;
   21336     }
   21337 
   21338     PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
   21339     {
   21340       flags = flags_;
   21341       return *this;
   21342     }
   21343 
   21344     PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
   21345     {
   21346       dynamicStateCount = dynamicStateCount_;
   21347       return *this;
   21348     }
   21349 
   21350     PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
   21351     {
   21352       pDynamicStates = pDynamicStates_;
   21353       return *this;
   21354     }
   21355 
   21356     operator VkPipelineDynamicStateCreateInfo const&() const
   21357     {
   21358       return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
   21359     }
   21360 
   21361     operator VkPipelineDynamicStateCreateInfo &()
   21362     {
   21363       return *reinterpret_cast<VkPipelineDynamicStateCreateInfo*>(this);
   21364     }
   21365 
   21366     bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
   21367     {
   21368       return ( sType == rhs.sType )
   21369           && ( pNext == rhs.pNext )
   21370           && ( flags == rhs.flags )
   21371           && ( dynamicStateCount == rhs.dynamicStateCount )
   21372           && ( pDynamicStates == rhs.pDynamicStates );
   21373     }
   21374 
   21375     bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
   21376     {
   21377       return !operator==( rhs );
   21378     }
   21379 
   21380   private:
   21381     StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
   21382 
   21383   public:
   21384     const void* pNext = nullptr;
   21385     PipelineDynamicStateCreateFlags flags;
   21386     uint32_t dynamicStateCount;
   21387     const DynamicState* pDynamicStates;
   21388   };
   21389   static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
   21390 
   21391   enum class DescriptorUpdateTemplateType
   21392   {
   21393     eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   21394     eDescriptorSetKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   21395     ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
   21396   };
   21397 
   21398   struct DescriptorUpdateTemplateCreateInfo
   21399   {
   21400     DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateFlags flags_ = DescriptorUpdateTemplateCreateFlags(),
   21401                                         uint32_t descriptorUpdateEntryCount_ = 0,
   21402                                         const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ = nullptr,
   21403                                         DescriptorUpdateTemplateType templateType_ = DescriptorUpdateTemplateType::eDescriptorSet,
   21404                                         DescriptorSetLayout descriptorSetLayout_ = DescriptorSetLayout(),
   21405                                         PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
   21406                                         PipelineLayout pipelineLayout_ = PipelineLayout(),
   21407                                         uint32_t set_ = 0 )
   21408       : flags( flags_ )
   21409       , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
   21410       , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
   21411       , templateType( templateType_ )
   21412       , descriptorSetLayout( descriptorSetLayout_ )
   21413       , pipelineBindPoint( pipelineBindPoint_ )
   21414       , pipelineLayout( pipelineLayout_ )
   21415       , set( set_ )
   21416     {
   21417     }
   21418 
   21419     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs )
   21420     {
   21421       memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
   21422     }
   21423 
   21424     DescriptorUpdateTemplateCreateInfo& operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs )
   21425     {
   21426       memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
   21427       return *this;
   21428     }
   21429     DescriptorUpdateTemplateCreateInfo& setPNext( void* pNext_ )
   21430     {
   21431       pNext = pNext_;
   21432       return *this;
   21433     }
   21434 
   21435     DescriptorUpdateTemplateCreateInfo& setFlags( DescriptorUpdateTemplateCreateFlags flags_ )
   21436     {
   21437       flags = flags_;
   21438       return *this;
   21439     }
   21440 
   21441     DescriptorUpdateTemplateCreateInfo& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
   21442     {
   21443       descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
   21444       return *this;
   21445     }
   21446 
   21447     DescriptorUpdateTemplateCreateInfo& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ )
   21448     {
   21449       pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
   21450       return *this;
   21451     }
   21452 
   21453     DescriptorUpdateTemplateCreateInfo& setTemplateType( DescriptorUpdateTemplateType templateType_ )
   21454     {
   21455       templateType = templateType_;
   21456       return *this;
   21457     }
   21458 
   21459     DescriptorUpdateTemplateCreateInfo& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
   21460     {
   21461       descriptorSetLayout = descriptorSetLayout_;
   21462       return *this;
   21463     }
   21464 
   21465     DescriptorUpdateTemplateCreateInfo& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
   21466     {
   21467       pipelineBindPoint = pipelineBindPoint_;
   21468       return *this;
   21469     }
   21470 
   21471     DescriptorUpdateTemplateCreateInfo& setPipelineLayout( PipelineLayout pipelineLayout_ )
   21472     {
   21473       pipelineLayout = pipelineLayout_;
   21474       return *this;
   21475     }
   21476 
   21477     DescriptorUpdateTemplateCreateInfo& setSet( uint32_t set_ )
   21478     {
   21479       set = set_;
   21480       return *this;
   21481     }
   21482 
   21483     operator VkDescriptorUpdateTemplateCreateInfo const&() const
   21484     {
   21485       return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>(this);
   21486     }
   21487 
   21488     operator VkDescriptorUpdateTemplateCreateInfo &()
   21489     {
   21490       return *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo*>(this);
   21491     }
   21492 
   21493     bool operator==( DescriptorUpdateTemplateCreateInfo const& rhs ) const
   21494     {
   21495       return ( sType == rhs.sType )
   21496           && ( pNext == rhs.pNext )
   21497           && ( flags == rhs.flags )
   21498           && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
   21499           && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
   21500           && ( templateType == rhs.templateType )
   21501           && ( descriptorSetLayout == rhs.descriptorSetLayout )
   21502           && ( pipelineBindPoint == rhs.pipelineBindPoint )
   21503           && ( pipelineLayout == rhs.pipelineLayout )
   21504           && ( set == rhs.set );
   21505     }
   21506 
   21507     bool operator!=( DescriptorUpdateTemplateCreateInfo const& rhs ) const
   21508     {
   21509       return !operator==( rhs );
   21510     }
   21511 
   21512   private:
   21513     StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo;
   21514 
   21515   public:
   21516     void* pNext = nullptr;
   21517     DescriptorUpdateTemplateCreateFlags flags;
   21518     uint32_t descriptorUpdateEntryCount;
   21519     const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
   21520     DescriptorUpdateTemplateType templateType;
   21521     DescriptorSetLayout descriptorSetLayout;
   21522     PipelineBindPoint pipelineBindPoint;
   21523     PipelineLayout pipelineLayout;
   21524     uint32_t set;
   21525   };
   21526   static_assert( sizeof( DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), "struct and wrapper have different size!" );
   21527 
   21528   using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
   21529 
   21530   enum class ObjectType
   21531   {
   21532     eUnknown = VK_OBJECT_TYPE_UNKNOWN,
   21533     eInstance = VK_OBJECT_TYPE_INSTANCE,
   21534     ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
   21535     eDevice = VK_OBJECT_TYPE_DEVICE,
   21536     eQueue = VK_OBJECT_TYPE_QUEUE,
   21537     eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
   21538     eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
   21539     eFence = VK_OBJECT_TYPE_FENCE,
   21540     eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
   21541     eBuffer = VK_OBJECT_TYPE_BUFFER,
   21542     eImage = VK_OBJECT_TYPE_IMAGE,
   21543     eEvent = VK_OBJECT_TYPE_EVENT,
   21544     eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
   21545     eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
   21546     eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
   21547     eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
   21548     ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
   21549     ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
   21550     eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
   21551     ePipeline = VK_OBJECT_TYPE_PIPELINE,
   21552     eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
   21553     eSampler = VK_OBJECT_TYPE_SAMPLER,
   21554     eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
   21555     eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
   21556     eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
   21557     eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
   21558     eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
   21559     eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
   21560     eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
   21561     eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
   21562     eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
   21563     eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
   21564     eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
   21565     eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
   21566     eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
   21567     eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
   21568     eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
   21569     eDebugUtilsMessengerEXT = VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,
   21570     eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT,
   21571     eAccelerationStructureNV = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV
   21572   };
   21573 
   21574   struct DebugUtilsObjectNameInfoEXT
   21575   {
   21576     DebugUtilsObjectNameInfoEXT( ObjectType objectType_ = ObjectType::eUnknown,
   21577                                  uint64_t objectHandle_ = 0,
   21578                                  const char* pObjectName_ = nullptr )
   21579       : objectType( objectType_ )
   21580       , objectHandle( objectHandle_ )
   21581       , pObjectName( pObjectName_ )
   21582     {
   21583     }
   21584 
   21585     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs )
   21586     {
   21587       memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
   21588     }
   21589 
   21590     DebugUtilsObjectNameInfoEXT& operator=( VkDebugUtilsObjectNameInfoEXT const & rhs )
   21591     {
   21592       memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
   21593       return *this;
   21594     }
   21595     DebugUtilsObjectNameInfoEXT& setPNext( const void* pNext_ )
   21596     {
   21597       pNext = pNext_;
   21598       return *this;
   21599     }
   21600 
   21601     DebugUtilsObjectNameInfoEXT& setObjectType( ObjectType objectType_ )
   21602     {
   21603       objectType = objectType_;
   21604       return *this;
   21605     }
   21606 
   21607     DebugUtilsObjectNameInfoEXT& setObjectHandle( uint64_t objectHandle_ )
   21608     {
   21609       objectHandle = objectHandle_;
   21610       return *this;
   21611     }
   21612 
   21613     DebugUtilsObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
   21614     {
   21615       pObjectName = pObjectName_;
   21616       return *this;
   21617     }
   21618 
   21619     operator VkDebugUtilsObjectNameInfoEXT const&() const
   21620     {
   21621       return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>(this);
   21622     }
   21623 
   21624     operator VkDebugUtilsObjectNameInfoEXT &()
   21625     {
   21626       return *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>(this);
   21627     }
   21628 
   21629     bool operator==( DebugUtilsObjectNameInfoEXT const& rhs ) const
   21630     {
   21631       return ( sType == rhs.sType )
   21632           && ( pNext == rhs.pNext )
   21633           && ( objectType == rhs.objectType )
   21634           && ( objectHandle == rhs.objectHandle )
   21635           && ( pObjectName == rhs.pObjectName );
   21636     }
   21637 
   21638     bool operator!=( DebugUtilsObjectNameInfoEXT const& rhs ) const
   21639     {
   21640       return !operator==( rhs );
   21641     }
   21642 
   21643   private:
   21644     StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT;
   21645 
   21646   public:
   21647     const void* pNext = nullptr;
   21648     ObjectType objectType;
   21649     uint64_t objectHandle;
   21650     const char* pObjectName;
   21651   };
   21652   static_assert( sizeof( DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), "struct and wrapper have different size!" );
   21653 
   21654   struct DebugUtilsObjectTagInfoEXT
   21655   {
   21656     DebugUtilsObjectTagInfoEXT( ObjectType objectType_ = ObjectType::eUnknown,
   21657                                 uint64_t objectHandle_ = 0,
   21658                                 uint64_t tagName_ = 0,
   21659                                 size_t tagSize_ = 0,
   21660                                 const void* pTag_ = nullptr )
   21661       : objectType( objectType_ )
   21662       , objectHandle( objectHandle_ )
   21663       , tagName( tagName_ )
   21664       , tagSize( tagSize_ )
   21665       , pTag( pTag_ )
   21666     {
   21667     }
   21668 
   21669     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs )
   21670     {
   21671       memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
   21672     }
   21673 
   21674     DebugUtilsObjectTagInfoEXT& operator=( VkDebugUtilsObjectTagInfoEXT const & rhs )
   21675     {
   21676       memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
   21677       return *this;
   21678     }
   21679     DebugUtilsObjectTagInfoEXT& setPNext( const void* pNext_ )
   21680     {
   21681       pNext = pNext_;
   21682       return *this;
   21683     }
   21684 
   21685     DebugUtilsObjectTagInfoEXT& setObjectType( ObjectType objectType_ )
   21686     {
   21687       objectType = objectType_;
   21688       return *this;
   21689     }
   21690 
   21691     DebugUtilsObjectTagInfoEXT& setObjectHandle( uint64_t objectHandle_ )
   21692     {
   21693       objectHandle = objectHandle_;
   21694       return *this;
   21695     }
   21696 
   21697     DebugUtilsObjectTagInfoEXT& setTagName( uint64_t tagName_ )
   21698     {
   21699       tagName = tagName_;
   21700       return *this;
   21701     }
   21702 
   21703     DebugUtilsObjectTagInfoEXT& setTagSize( size_t tagSize_ )
   21704     {
   21705       tagSize = tagSize_;
   21706       return *this;
   21707     }
   21708 
   21709     DebugUtilsObjectTagInfoEXT& setPTag( const void* pTag_ )
   21710     {
   21711       pTag = pTag_;
   21712       return *this;
   21713     }
   21714 
   21715     operator VkDebugUtilsObjectTagInfoEXT const&() const
   21716     {
   21717       return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>(this);
   21718     }
   21719 
   21720     operator VkDebugUtilsObjectTagInfoEXT &()
   21721     {
   21722       return *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT*>(this);
   21723     }
   21724 
   21725     bool operator==( DebugUtilsObjectTagInfoEXT const& rhs ) const
   21726     {
   21727       return ( sType == rhs.sType )
   21728           && ( pNext == rhs.pNext )
   21729           && ( objectType == rhs.objectType )
   21730           && ( objectHandle == rhs.objectHandle )
   21731           && ( tagName == rhs.tagName )
   21732           && ( tagSize == rhs.tagSize )
   21733           && ( pTag == rhs.pTag );
   21734     }
   21735 
   21736     bool operator!=( DebugUtilsObjectTagInfoEXT const& rhs ) const
   21737     {
   21738       return !operator==( rhs );
   21739     }
   21740 
   21741   private:
   21742     StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT;
   21743 
   21744   public:
   21745     const void* pNext = nullptr;
   21746     ObjectType objectType;
   21747     uint64_t objectHandle;
   21748     uint64_t tagName;
   21749     size_t tagSize;
   21750     const void* pTag;
   21751   };
   21752   static_assert( sizeof( DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), "struct and wrapper have different size!" );
   21753 
   21754   struct DebugUtilsMessengerCallbackDataEXT
   21755   {
   21756     DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataFlagsEXT flags_ = DebugUtilsMessengerCallbackDataFlagsEXT(),
   21757                                         const char* pMessageIdName_ = nullptr,
   21758                                         int32_t messageIdNumber_ = 0,
   21759                                         const char* pMessage_ = nullptr,
   21760                                         uint32_t queueLabelCount_ = 0,
   21761                                         DebugUtilsLabelEXT* pQueueLabels_ = nullptr,
   21762                                         uint32_t cmdBufLabelCount_ = 0,
   21763                                         DebugUtilsLabelEXT* pCmdBufLabels_ = nullptr,
   21764                                         uint32_t objectCount_ = 0,
   21765                                         DebugUtilsObjectNameInfoEXT* pObjects_ = nullptr )
   21766       : flags( flags_ )
   21767       , pMessageIdName( pMessageIdName_ )
   21768       , messageIdNumber( messageIdNumber_ )
   21769       , pMessage( pMessage_ )
   21770       , queueLabelCount( queueLabelCount_ )
   21771       , pQueueLabels( pQueueLabels_ )
   21772       , cmdBufLabelCount( cmdBufLabelCount_ )
   21773       , pCmdBufLabels( pCmdBufLabels_ )
   21774       , objectCount( objectCount_ )
   21775       , pObjects( pObjects_ )
   21776     {
   21777     }
   21778 
   21779     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
   21780     {
   21781       memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
   21782     }
   21783 
   21784     DebugUtilsMessengerCallbackDataEXT& operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
   21785     {
   21786       memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
   21787       return *this;
   21788     }
   21789     DebugUtilsMessengerCallbackDataEXT& setPNext( const void* pNext_ )
   21790     {
   21791       pNext = pNext_;
   21792       return *this;
   21793     }
   21794 
   21795     DebugUtilsMessengerCallbackDataEXT& setFlags( DebugUtilsMessengerCallbackDataFlagsEXT flags_ )
   21796     {
   21797       flags = flags_;
   21798       return *this;
   21799     }
   21800 
   21801     DebugUtilsMessengerCallbackDataEXT& setPMessageIdName( const char* pMessageIdName_ )
   21802     {
   21803       pMessageIdName = pMessageIdName_;
   21804       return *this;
   21805     }
   21806 
   21807     DebugUtilsMessengerCallbackDataEXT& setMessageIdNumber( int32_t messageIdNumber_ )
   21808     {
   21809       messageIdNumber = messageIdNumber_;
   21810       return *this;
   21811     }
   21812 
   21813     DebugUtilsMessengerCallbackDataEXT& setPMessage( const char* pMessage_ )
   21814     {
   21815       pMessage = pMessage_;
   21816       return *this;
   21817     }
   21818 
   21819     DebugUtilsMessengerCallbackDataEXT& setQueueLabelCount( uint32_t queueLabelCount_ )
   21820     {
   21821       queueLabelCount = queueLabelCount_;
   21822       return *this;
   21823     }
   21824 
   21825     DebugUtilsMessengerCallbackDataEXT& setPQueueLabels( DebugUtilsLabelEXT* pQueueLabels_ )
   21826     {
   21827       pQueueLabels = pQueueLabels_;
   21828       return *this;
   21829     }
   21830 
   21831     DebugUtilsMessengerCallbackDataEXT& setCmdBufLabelCount( uint32_t cmdBufLabelCount_ )
   21832     {
   21833       cmdBufLabelCount = cmdBufLabelCount_;
   21834       return *this;
   21835     }
   21836 
   21837     DebugUtilsMessengerCallbackDataEXT& setPCmdBufLabels( DebugUtilsLabelEXT* pCmdBufLabels_ )
   21838     {
   21839       pCmdBufLabels = pCmdBufLabels_;
   21840       return *this;
   21841     }
   21842 
   21843     DebugUtilsMessengerCallbackDataEXT& setObjectCount( uint32_t objectCount_ )
   21844     {
   21845       objectCount = objectCount_;
   21846       return *this;
   21847     }
   21848 
   21849     DebugUtilsMessengerCallbackDataEXT& setPObjects( DebugUtilsObjectNameInfoEXT* pObjects_ )
   21850     {
   21851       pObjects = pObjects_;
   21852       return *this;
   21853     }
   21854 
   21855     operator VkDebugUtilsMessengerCallbackDataEXT const&() const
   21856     {
   21857       return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>(this);
   21858     }
   21859 
   21860     operator VkDebugUtilsMessengerCallbackDataEXT &()
   21861     {
   21862       return *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT*>(this);
   21863     }
   21864 
   21865     bool operator==( DebugUtilsMessengerCallbackDataEXT const& rhs ) const
   21866     {
   21867       return ( sType == rhs.sType )
   21868           && ( pNext == rhs.pNext )
   21869           && ( flags == rhs.flags )
   21870           && ( pMessageIdName == rhs.pMessageIdName )
   21871           && ( messageIdNumber == rhs.messageIdNumber )
   21872           && ( pMessage == rhs.pMessage )
   21873           && ( queueLabelCount == rhs.queueLabelCount )
   21874           && ( pQueueLabels == rhs.pQueueLabels )
   21875           && ( cmdBufLabelCount == rhs.cmdBufLabelCount )
   21876           && ( pCmdBufLabels == rhs.pCmdBufLabels )
   21877           && ( objectCount == rhs.objectCount )
   21878           && ( pObjects == rhs.pObjects );
   21879     }
   21880 
   21881     bool operator!=( DebugUtilsMessengerCallbackDataEXT const& rhs ) const
   21882     {
   21883       return !operator==( rhs );
   21884     }
   21885 
   21886   private:
   21887     StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
   21888 
   21889   public:
   21890     const void* pNext = nullptr;
   21891     DebugUtilsMessengerCallbackDataFlagsEXT flags;
   21892     const char* pMessageIdName;
   21893     int32_t messageIdNumber;
   21894     const char* pMessage;
   21895     uint32_t queueLabelCount;
   21896     DebugUtilsLabelEXT* pQueueLabels;
   21897     uint32_t cmdBufLabelCount;
   21898     DebugUtilsLabelEXT* pCmdBufLabels;
   21899     uint32_t objectCount;
   21900     DebugUtilsObjectNameInfoEXT* pObjects;
   21901   };
   21902   static_assert( sizeof( DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), "struct and wrapper have different size!" );
   21903 
   21904   enum class QueueFlagBits
   21905   {
   21906     eGraphics = VK_QUEUE_GRAPHICS_BIT,
   21907     eCompute = VK_QUEUE_COMPUTE_BIT,
   21908     eTransfer = VK_QUEUE_TRANSFER_BIT,
   21909     eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT,
   21910     eProtected = VK_QUEUE_PROTECTED_BIT
   21911   };
   21912 
   21913   using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
   21914 
   21915   VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
   21916   {
   21917     return QueueFlags( bit0 ) | bit1;
   21918   }
   21919 
   21920   VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
   21921   {
   21922     return ~( QueueFlags( bits ) );
   21923   }
   21924 
   21925   template <> struct FlagTraits<QueueFlagBits>
   21926   {
   21927     enum
   21928     {
   21929       allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding) | VkFlags(QueueFlagBits::eProtected)
   21930     };
   21931   };
   21932 
   21933   struct QueueFamilyProperties
   21934   {
   21935     operator VkQueueFamilyProperties const&() const
   21936     {
   21937       return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
   21938     }
   21939 
   21940     operator VkQueueFamilyProperties &()
   21941     {
   21942       return *reinterpret_cast<VkQueueFamilyProperties*>(this);
   21943     }
   21944 
   21945     bool operator==( QueueFamilyProperties const& rhs ) const
   21946     {
   21947       return ( queueFlags == rhs.queueFlags )
   21948           && ( queueCount == rhs.queueCount )
   21949           && ( timestampValidBits == rhs.timestampValidBits )
   21950           && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
   21951     }
   21952 
   21953     bool operator!=( QueueFamilyProperties const& rhs ) const
   21954     {
   21955       return !operator==( rhs );
   21956     }
   21957 
   21958     QueueFlags queueFlags;
   21959     uint32_t queueCount;
   21960     uint32_t timestampValidBits;
   21961     Extent3D minImageTransferGranularity;
   21962   };
   21963   static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
   21964 
   21965   struct QueueFamilyProperties2
   21966   {
   21967     operator VkQueueFamilyProperties2 const&() const
   21968     {
   21969       return *reinterpret_cast<const VkQueueFamilyProperties2*>(this);
   21970     }
   21971 
   21972     operator VkQueueFamilyProperties2 &()
   21973     {
   21974       return *reinterpret_cast<VkQueueFamilyProperties2*>(this);
   21975     }
   21976 
   21977     bool operator==( QueueFamilyProperties2 const& rhs ) const
   21978     {
   21979       return ( sType == rhs.sType )
   21980           && ( pNext == rhs.pNext )
   21981           && ( queueFamilyProperties == rhs.queueFamilyProperties );
   21982     }
   21983 
   21984     bool operator!=( QueueFamilyProperties2 const& rhs ) const
   21985     {
   21986       return !operator==( rhs );
   21987     }
   21988 
   21989   private:
   21990     StructureType sType = StructureType::eQueueFamilyProperties2;
   21991 
   21992   public:
   21993     void* pNext = nullptr;
   21994     QueueFamilyProperties queueFamilyProperties;
   21995   };
   21996   static_assert( sizeof( QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), "struct and wrapper have different size!" );
   21997 
   21998   using QueueFamilyProperties2KHR = QueueFamilyProperties2;
   21999 
   22000   enum class DeviceQueueCreateFlagBits
   22001   {
   22002     eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
   22003   };
   22004 
   22005   using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
   22006 
   22007   VULKAN_HPP_INLINE DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 )
   22008   {
   22009     return DeviceQueueCreateFlags( bit0 ) | bit1;
   22010   }
   22011 
   22012   VULKAN_HPP_INLINE DeviceQueueCreateFlags operator~( DeviceQueueCreateFlagBits bits )
   22013   {
   22014     return ~( DeviceQueueCreateFlags( bits ) );
   22015   }
   22016 
   22017   template <> struct FlagTraits<DeviceQueueCreateFlagBits>
   22018   {
   22019     enum
   22020     {
   22021       allFlags = VkFlags(DeviceQueueCreateFlagBits::eProtected)
   22022     };
   22023   };
   22024 
   22025   struct DeviceQueueCreateInfo
   22026   {
   22027     DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(),
   22028                            uint32_t queueFamilyIndex_ = 0,
   22029                            uint32_t queueCount_ = 0,
   22030                            const float* pQueuePriorities_ = nullptr )
   22031       : flags( flags_ )
   22032       , queueFamilyIndex( queueFamilyIndex_ )
   22033       , queueCount( queueCount_ )
   22034       , pQueuePriorities( pQueuePriorities_ )
   22035     {
   22036     }
   22037 
   22038     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
   22039     {
   22040       memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
   22041     }
   22042 
   22043     DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
   22044     {
   22045       memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
   22046       return *this;
   22047     }
   22048     DeviceQueueCreateInfo& setPNext( const void* pNext_ )
   22049     {
   22050       pNext = pNext_;
   22051       return *this;
   22052     }
   22053 
   22054     DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
   22055     {
   22056       flags = flags_;
   22057       return *this;
   22058     }
   22059 
   22060     DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
   22061     {
   22062       queueFamilyIndex = queueFamilyIndex_;
   22063       return *this;
   22064     }
   22065 
   22066     DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
   22067     {
   22068       queueCount = queueCount_;
   22069       return *this;
   22070     }
   22071 
   22072     DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
   22073     {
   22074       pQueuePriorities = pQueuePriorities_;
   22075       return *this;
   22076     }
   22077 
   22078     operator VkDeviceQueueCreateInfo const&() const
   22079     {
   22080       return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
   22081     }
   22082 
   22083     operator VkDeviceQueueCreateInfo &()
   22084     {
   22085       return *reinterpret_cast<VkDeviceQueueCreateInfo*>(this);
   22086     }
   22087 
   22088     bool operator==( DeviceQueueCreateInfo const& rhs ) const
   22089     {
   22090       return ( sType == rhs.sType )
   22091           && ( pNext == rhs.pNext )
   22092           && ( flags == rhs.flags )
   22093           && ( queueFamilyIndex == rhs.queueFamilyIndex )
   22094           && ( queueCount == rhs.queueCount )
   22095           && ( pQueuePriorities == rhs.pQueuePriorities );
   22096     }
   22097 
   22098     bool operator!=( DeviceQueueCreateInfo const& rhs ) const
   22099     {
   22100       return !operator==( rhs );
   22101     }
   22102 
   22103   private:
   22104     StructureType sType = StructureType::eDeviceQueueCreateInfo;
   22105 
   22106   public:
   22107     const void* pNext = nullptr;
   22108     DeviceQueueCreateFlags flags;
   22109     uint32_t queueFamilyIndex;
   22110     uint32_t queueCount;
   22111     const float* pQueuePriorities;
   22112   };
   22113   static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
   22114 
   22115   struct DeviceCreateInfo
   22116   {
   22117     DeviceCreateInfo( DeviceCreateFlags flags_ = DeviceCreateFlags(),
   22118                       uint32_t queueCreateInfoCount_ = 0,
   22119                       const DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr,
   22120                       uint32_t enabledLayerCount_ = 0,
   22121                       const char* const* ppEnabledLayerNames_ = nullptr,
   22122                       uint32_t enabledExtensionCount_ = 0,
   22123                       const char* const* ppEnabledExtensionNames_ = nullptr,
   22124                       const PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr )
   22125       : flags( flags_ )
   22126       , queueCreateInfoCount( queueCreateInfoCount_ )
   22127       , pQueueCreateInfos( pQueueCreateInfos_ )
   22128       , enabledLayerCount( enabledLayerCount_ )
   22129       , ppEnabledLayerNames( ppEnabledLayerNames_ )
   22130       , enabledExtensionCount( enabledExtensionCount_ )
   22131       , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
   22132       , pEnabledFeatures( pEnabledFeatures_ )
   22133     {
   22134     }
   22135 
   22136     DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
   22137     {
   22138       memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
   22139     }
   22140 
   22141     DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
   22142     {
   22143       memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
   22144       return *this;
   22145     }
   22146     DeviceCreateInfo& setPNext( const void* pNext_ )
   22147     {
   22148       pNext = pNext_;
   22149       return *this;
   22150     }
   22151 
   22152     DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
   22153     {
   22154       flags = flags_;
   22155       return *this;
   22156     }
   22157 
   22158     DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
   22159     {
   22160       queueCreateInfoCount = queueCreateInfoCount_;
   22161       return *this;
   22162     }
   22163 
   22164     DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
   22165     {
   22166       pQueueCreateInfos = pQueueCreateInfos_;
   22167       return *this;
   22168     }
   22169 
   22170     DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
   22171     {
   22172       enabledLayerCount = enabledLayerCount_;
   22173       return *this;
   22174     }
   22175 
   22176     DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
   22177     {
   22178       ppEnabledLayerNames = ppEnabledLayerNames_;
   22179       return *this;
   22180     }
   22181 
   22182     DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
   22183     {
   22184       enabledExtensionCount = enabledExtensionCount_;
   22185       return *this;
   22186     }
   22187 
   22188     DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
   22189     {
   22190       ppEnabledExtensionNames = ppEnabledExtensionNames_;
   22191       return *this;
   22192     }
   22193 
   22194     DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
   22195     {
   22196       pEnabledFeatures = pEnabledFeatures_;
   22197       return *this;
   22198     }
   22199 
   22200     operator VkDeviceCreateInfo const&() const
   22201     {
   22202       return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
   22203     }
   22204 
   22205     operator VkDeviceCreateInfo &()
   22206     {
   22207       return *reinterpret_cast<VkDeviceCreateInfo*>(this);
   22208     }
   22209 
   22210     bool operator==( DeviceCreateInfo const& rhs ) const
   22211     {
   22212       return ( sType == rhs.sType )
   22213           && ( pNext == rhs.pNext )
   22214           && ( flags == rhs.flags )
   22215           && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
   22216           && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
   22217           && ( enabledLayerCount == rhs.enabledLayerCount )
   22218           && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
   22219           && ( enabledExtensionCount == rhs.enabledExtensionCount )
   22220           && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
   22221           && ( pEnabledFeatures == rhs.pEnabledFeatures );
   22222     }
   22223 
   22224     bool operator!=( DeviceCreateInfo const& rhs ) const
   22225     {
   22226       return !operator==( rhs );
   22227     }
   22228 
   22229   private:
   22230     StructureType sType = StructureType::eDeviceCreateInfo;
   22231 
   22232   public:
   22233     const void* pNext = nullptr;
   22234     DeviceCreateFlags flags;
   22235     uint32_t queueCreateInfoCount;
   22236     const DeviceQueueCreateInfo* pQueueCreateInfos;
   22237     uint32_t enabledLayerCount;
   22238     const char* const* ppEnabledLayerNames;
   22239     uint32_t enabledExtensionCount;
   22240     const char* const* ppEnabledExtensionNames;
   22241     const PhysicalDeviceFeatures* pEnabledFeatures;
   22242   };
   22243   static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
   22244 
   22245   struct DeviceQueueInfo2
   22246   {
   22247     DeviceQueueInfo2( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(),
   22248                       uint32_t queueFamilyIndex_ = 0,
   22249                       uint32_t queueIndex_ = 0 )
   22250       : flags( flags_ )
   22251       , queueFamilyIndex( queueFamilyIndex_ )
   22252       , queueIndex( queueIndex_ )
   22253     {
   22254     }
   22255 
   22256     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs )
   22257     {
   22258       memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
   22259     }
   22260 
   22261     DeviceQueueInfo2& operator=( VkDeviceQueueInfo2 const & rhs )
   22262     {
   22263       memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
   22264       return *this;
   22265     }
   22266     DeviceQueueInfo2& setPNext( const void* pNext_ )
   22267     {
   22268       pNext = pNext_;
   22269       return *this;
   22270     }
   22271 
   22272     DeviceQueueInfo2& setFlags( DeviceQueueCreateFlags flags_ )
   22273     {
   22274       flags = flags_;
   22275       return *this;
   22276     }
   22277 
   22278     DeviceQueueInfo2& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
   22279     {
   22280       queueFamilyIndex = queueFamilyIndex_;
   22281       return *this;
   22282     }
   22283 
   22284     DeviceQueueInfo2& setQueueIndex( uint32_t queueIndex_ )
   22285     {
   22286       queueIndex = queueIndex_;
   22287       return *this;
   22288     }
   22289 
   22290     operator VkDeviceQueueInfo2 const&() const
   22291     {
   22292       return *reinterpret_cast<const VkDeviceQueueInfo2*>(this);
   22293     }
   22294 
   22295     operator VkDeviceQueueInfo2 &()
   22296     {
   22297       return *reinterpret_cast<VkDeviceQueueInfo2*>(this);
   22298     }
   22299 
   22300     bool operator==( DeviceQueueInfo2 const& rhs ) const
   22301     {
   22302       return ( sType == rhs.sType )
   22303           && ( pNext == rhs.pNext )
   22304           && ( flags == rhs.flags )
   22305           && ( queueFamilyIndex == rhs.queueFamilyIndex )
   22306           && ( queueIndex == rhs.queueIndex );
   22307     }
   22308 
   22309     bool operator!=( DeviceQueueInfo2 const& rhs ) const
   22310     {
   22311       return !operator==( rhs );
   22312     }
   22313 
   22314   private:
   22315     StructureType sType = StructureType::eDeviceQueueInfo2;
   22316 
   22317   public:
   22318     const void* pNext = nullptr;
   22319     DeviceQueueCreateFlags flags;
   22320     uint32_t queueFamilyIndex;
   22321     uint32_t queueIndex;
   22322   };
   22323   static_assert( sizeof( DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "struct and wrapper have different size!" );
   22324 
   22325   enum class MemoryPropertyFlagBits
   22326   {
   22327     eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
   22328     eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
   22329     eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
   22330     eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
   22331     eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,
   22332     eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT
   22333   };
   22334 
   22335   using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
   22336 
   22337   VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
   22338   {
   22339     return MemoryPropertyFlags( bit0 ) | bit1;
   22340   }
   22341 
   22342   VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
   22343   {
   22344     return ~( MemoryPropertyFlags( bits ) );
   22345   }
   22346 
   22347   template <> struct FlagTraits<MemoryPropertyFlagBits>
   22348   {
   22349     enum
   22350     {
   22351       allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | VkFlags(MemoryPropertyFlagBits::eProtected)
   22352     };
   22353   };
   22354 
   22355   struct MemoryType
   22356   {
   22357     operator VkMemoryType const&() const
   22358     {
   22359       return *reinterpret_cast<const VkMemoryType*>(this);
   22360     }
   22361 
   22362     operator VkMemoryType &()
   22363     {
   22364       return *reinterpret_cast<VkMemoryType*>(this);
   22365     }
   22366 
   22367     bool operator==( MemoryType const& rhs ) const
   22368     {
   22369       return ( propertyFlags == rhs.propertyFlags )
   22370           && ( heapIndex == rhs.heapIndex );
   22371     }
   22372 
   22373     bool operator!=( MemoryType const& rhs ) const
   22374     {
   22375       return !operator==( rhs );
   22376     }
   22377 
   22378     MemoryPropertyFlags propertyFlags;
   22379     uint32_t heapIndex;
   22380   };
   22381   static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
   22382 
   22383   enum class MemoryHeapFlagBits
   22384   {
   22385     eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
   22386     eMultiInstance = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
   22387     eMultiInstanceKHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
   22388   };
   22389 
   22390   using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
   22391 
   22392   VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
   22393   {
   22394     return MemoryHeapFlags( bit0 ) | bit1;
   22395   }
   22396 
   22397   VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
   22398   {
   22399     return ~( MemoryHeapFlags( bits ) );
   22400   }
   22401 
   22402   template <> struct FlagTraits<MemoryHeapFlagBits>
   22403   {
   22404     enum
   22405     {
   22406       allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstance)
   22407     };
   22408   };
   22409 
   22410   struct MemoryHeap
   22411   {
   22412     operator VkMemoryHeap const&() const
   22413     {
   22414       return *reinterpret_cast<const VkMemoryHeap*>(this);
   22415     }
   22416 
   22417     operator VkMemoryHeap &()
   22418     {
   22419       return *reinterpret_cast<VkMemoryHeap*>(this);
   22420     }
   22421 
   22422     bool operator==( MemoryHeap const& rhs ) const
   22423     {
   22424       return ( size == rhs.size )
   22425           && ( flags == rhs.flags );
   22426     }
   22427 
   22428     bool operator!=( MemoryHeap const& rhs ) const
   22429     {
   22430       return !operator==( rhs );
   22431     }
   22432 
   22433     DeviceSize size;
   22434     MemoryHeapFlags flags;
   22435   };
   22436   static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
   22437 
   22438   struct PhysicalDeviceMemoryProperties
   22439   {
   22440     operator VkPhysicalDeviceMemoryProperties const&() const
   22441     {
   22442       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
   22443     }
   22444 
   22445     operator VkPhysicalDeviceMemoryProperties &()
   22446     {
   22447       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties*>(this);
   22448     }
   22449 
   22450     bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
   22451     {
   22452       return ( memoryTypeCount == rhs.memoryTypeCount )
   22453           && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
   22454           && ( memoryHeapCount == rhs.memoryHeapCount )
   22455           && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
   22456     }
   22457 
   22458     bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
   22459     {
   22460       return !operator==( rhs );
   22461     }
   22462 
   22463     uint32_t memoryTypeCount;
   22464     MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
   22465     uint32_t memoryHeapCount;
   22466     MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
   22467   };
   22468   static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
   22469 
   22470   struct PhysicalDeviceMemoryProperties2
   22471   {
   22472     operator VkPhysicalDeviceMemoryProperties2 const&() const
   22473     {
   22474       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2*>(this);
   22475     }
   22476 
   22477     operator VkPhysicalDeviceMemoryProperties2 &()
   22478     {
   22479       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>(this);
   22480     }
   22481 
   22482     bool operator==( PhysicalDeviceMemoryProperties2 const& rhs ) const
   22483     {
   22484       return ( sType == rhs.sType )
   22485           && ( pNext == rhs.pNext )
   22486           && ( memoryProperties == rhs.memoryProperties );
   22487     }
   22488 
   22489     bool operator!=( PhysicalDeviceMemoryProperties2 const& rhs ) const
   22490     {
   22491       return !operator==( rhs );
   22492     }
   22493 
   22494   private:
   22495     StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2;
   22496 
   22497   public:
   22498     void* pNext = nullptr;
   22499     PhysicalDeviceMemoryProperties memoryProperties;
   22500   };
   22501   static_assert( sizeof( PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), "struct and wrapper have different size!" );
   22502 
   22503   using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
   22504 
   22505   enum class AccessFlagBits
   22506   {
   22507     eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
   22508     eIndexRead = VK_ACCESS_INDEX_READ_BIT,
   22509     eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
   22510     eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
   22511     eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
   22512     eShaderRead = VK_ACCESS_SHADER_READ_BIT,
   22513     eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
   22514     eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
   22515     eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
   22516     eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
   22517     eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
   22518     eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
   22519     eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
   22520     eHostRead = VK_ACCESS_HOST_READ_BIT,
   22521     eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
   22522     eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
   22523     eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
   22524     eTransformFeedbackWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
   22525     eTransformFeedbackCounterReadEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
   22526     eTransformFeedbackCounterWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
   22527     eConditionalRenderingReadEXT = VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,
   22528     eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
   22529     eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
   22530     eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,
   22531     eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,
   22532     eAccelerationStructureReadNV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,
   22533     eAccelerationStructureWriteNV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV
   22534   };
   22535 
   22536   using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
   22537 
   22538   VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
   22539   {
   22540     return AccessFlags( bit0 ) | bit1;
   22541   }
   22542 
   22543   VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
   22544   {
   22545     return ~( AccessFlags( bits ) );
   22546   }
   22547 
   22548   template <> struct FlagTraits<AccessFlagBits>
   22549   {
   22550     enum
   22551     {
   22552       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::eTransformFeedbackWriteEXT) | VkFlags(AccessFlagBits::eTransformFeedbackCounterReadEXT) | VkFlags(AccessFlagBits::eTransformFeedbackCounterWriteEXT) | VkFlags(AccessFlagBits::eConditionalRenderingReadEXT) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT) | VkFlags(AccessFlagBits::eShadingRateImageReadNV) | VkFlags(AccessFlagBits::eAccelerationStructureReadNV) | VkFlags(AccessFlagBits::eAccelerationStructureWriteNV)
   22553     };
   22554   };
   22555 
   22556   struct MemoryBarrier
   22557   {
   22558     MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
   22559                    AccessFlags dstAccessMask_ = AccessFlags() )
   22560       : srcAccessMask( srcAccessMask_ )
   22561       , dstAccessMask( dstAccessMask_ )
   22562     {
   22563     }
   22564 
   22565     MemoryBarrier( VkMemoryBarrier const & rhs )
   22566     {
   22567       memcpy( this, &rhs, sizeof( MemoryBarrier ) );
   22568     }
   22569 
   22570     MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
   22571     {
   22572       memcpy( this, &rhs, sizeof( MemoryBarrier ) );
   22573       return *this;
   22574     }
   22575     MemoryBarrier& setPNext( const void* pNext_ )
   22576     {
   22577       pNext = pNext_;
   22578       return *this;
   22579     }
   22580 
   22581     MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
   22582     {
   22583       srcAccessMask = srcAccessMask_;
   22584       return *this;
   22585     }
   22586 
   22587     MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
   22588     {
   22589       dstAccessMask = dstAccessMask_;
   22590       return *this;
   22591     }
   22592 
   22593     operator VkMemoryBarrier const&() const
   22594     {
   22595       return *reinterpret_cast<const VkMemoryBarrier*>(this);
   22596     }
   22597 
   22598     operator VkMemoryBarrier &()
   22599     {
   22600       return *reinterpret_cast<VkMemoryBarrier*>(this);
   22601     }
   22602 
   22603     bool operator==( MemoryBarrier const& rhs ) const
   22604     {
   22605       return ( sType == rhs.sType )
   22606           && ( pNext == rhs.pNext )
   22607           && ( srcAccessMask == rhs.srcAccessMask )
   22608           && ( dstAccessMask == rhs.dstAccessMask );
   22609     }
   22610 
   22611     bool operator!=( MemoryBarrier const& rhs ) const
   22612     {
   22613       return !operator==( rhs );
   22614     }
   22615 
   22616   private:
   22617     StructureType sType = StructureType::eMemoryBarrier;
   22618 
   22619   public:
   22620     const void* pNext = nullptr;
   22621     AccessFlags srcAccessMask;
   22622     AccessFlags dstAccessMask;
   22623   };
   22624   static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
   22625 
   22626   struct BufferMemoryBarrier
   22627   {
   22628     BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
   22629                          AccessFlags dstAccessMask_ = AccessFlags(),
   22630                          uint32_t srcQueueFamilyIndex_ = 0,
   22631                          uint32_t dstQueueFamilyIndex_ = 0,
   22632                          Buffer buffer_ = Buffer(),
   22633                          DeviceSize offset_ = 0,
   22634                          DeviceSize size_ = 0 )
   22635       : srcAccessMask( srcAccessMask_ )
   22636       , dstAccessMask( dstAccessMask_ )
   22637       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
   22638       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
   22639       , buffer( buffer_ )
   22640       , offset( offset_ )
   22641       , size( size_ )
   22642     {
   22643     }
   22644 
   22645     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
   22646     {
   22647       memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
   22648     }
   22649 
   22650     BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
   22651     {
   22652       memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
   22653       return *this;
   22654     }
   22655     BufferMemoryBarrier& setPNext( const void* pNext_ )
   22656     {
   22657       pNext = pNext_;
   22658       return *this;
   22659     }
   22660 
   22661     BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
   22662     {
   22663       srcAccessMask = srcAccessMask_;
   22664       return *this;
   22665     }
   22666 
   22667     BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
   22668     {
   22669       dstAccessMask = dstAccessMask_;
   22670       return *this;
   22671     }
   22672 
   22673     BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
   22674     {
   22675       srcQueueFamilyIndex = srcQueueFamilyIndex_;
   22676       return *this;
   22677     }
   22678 
   22679     BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
   22680     {
   22681       dstQueueFamilyIndex = dstQueueFamilyIndex_;
   22682       return *this;
   22683     }
   22684 
   22685     BufferMemoryBarrier& setBuffer( Buffer buffer_ )
   22686     {
   22687       buffer = buffer_;
   22688       return *this;
   22689     }
   22690 
   22691     BufferMemoryBarrier& setOffset( DeviceSize offset_ )
   22692     {
   22693       offset = offset_;
   22694       return *this;
   22695     }
   22696 
   22697     BufferMemoryBarrier& setSize( DeviceSize size_ )
   22698     {
   22699       size = size_;
   22700       return *this;
   22701     }
   22702 
   22703     operator VkBufferMemoryBarrier const&() const
   22704     {
   22705       return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
   22706     }
   22707 
   22708     operator VkBufferMemoryBarrier &()
   22709     {
   22710       return *reinterpret_cast<VkBufferMemoryBarrier*>(this);
   22711     }
   22712 
   22713     bool operator==( BufferMemoryBarrier const& rhs ) const
   22714     {
   22715       return ( sType == rhs.sType )
   22716           && ( pNext == rhs.pNext )
   22717           && ( srcAccessMask == rhs.srcAccessMask )
   22718           && ( dstAccessMask == rhs.dstAccessMask )
   22719           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
   22720           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
   22721           && ( buffer == rhs.buffer )
   22722           && ( offset == rhs.offset )
   22723           && ( size == rhs.size );
   22724     }
   22725 
   22726     bool operator!=( BufferMemoryBarrier const& rhs ) const
   22727     {
   22728       return !operator==( rhs );
   22729     }
   22730 
   22731   private:
   22732     StructureType sType = StructureType::eBufferMemoryBarrier;
   22733 
   22734   public:
   22735     const void* pNext = nullptr;
   22736     AccessFlags srcAccessMask;
   22737     AccessFlags dstAccessMask;
   22738     uint32_t srcQueueFamilyIndex;
   22739     uint32_t dstQueueFamilyIndex;
   22740     Buffer buffer;
   22741     DeviceSize offset;
   22742     DeviceSize size;
   22743   };
   22744   static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
   22745 
   22746   enum class BufferUsageFlagBits
   22747   {
   22748     eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
   22749     eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
   22750     eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
   22751     eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
   22752     eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
   22753     eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
   22754     eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
   22755     eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
   22756     eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,
   22757     eTransformFeedbackBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,
   22758     eTransformFeedbackCounterBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT,
   22759     eConditionalRenderingEXT = VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,
   22760     eRayTracingNV = VK_BUFFER_USAGE_RAY_TRACING_BIT_NV
   22761   };
   22762 
   22763   using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
   22764 
   22765   VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
   22766   {
   22767     return BufferUsageFlags( bit0 ) | bit1;
   22768   }
   22769 
   22770   VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
   22771   {
   22772     return ~( BufferUsageFlags( bits ) );
   22773   }
   22774 
   22775   template <> struct FlagTraits<BufferUsageFlagBits>
   22776   {
   22777     enum
   22778     {
   22779       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::eTransformFeedbackBufferEXT) | VkFlags(BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT) | VkFlags(BufferUsageFlagBits::eConditionalRenderingEXT) | VkFlags(BufferUsageFlagBits::eRayTracingNV)
   22780     };
   22781   };
   22782 
   22783   enum class BufferCreateFlagBits
   22784   {
   22785     eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
   22786     eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
   22787     eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,
   22788     eProtected = VK_BUFFER_CREATE_PROTECTED_BIT
   22789   };
   22790 
   22791   using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
   22792 
   22793   VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
   22794   {
   22795     return BufferCreateFlags( bit0 ) | bit1;
   22796   }
   22797 
   22798   VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
   22799   {
   22800     return ~( BufferCreateFlags( bits ) );
   22801   }
   22802 
   22803   template <> struct FlagTraits<BufferCreateFlagBits>
   22804   {
   22805     enum
   22806     {
   22807       allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased) | VkFlags(BufferCreateFlagBits::eProtected)
   22808     };
   22809   };
   22810 
   22811   struct BufferCreateInfo
   22812   {
   22813     BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(),
   22814                       DeviceSize size_ = 0,
   22815                       BufferUsageFlags usage_ = BufferUsageFlags(),
   22816                       SharingMode sharingMode_ = SharingMode::eExclusive,
   22817                       uint32_t queueFamilyIndexCount_ = 0,
   22818                       const uint32_t* pQueueFamilyIndices_ = nullptr )
   22819       : flags( flags_ )
   22820       , size( size_ )
   22821       , usage( usage_ )
   22822       , sharingMode( sharingMode_ )
   22823       , queueFamilyIndexCount( queueFamilyIndexCount_ )
   22824       , pQueueFamilyIndices( pQueueFamilyIndices_ )
   22825     {
   22826     }
   22827 
   22828     BufferCreateInfo( VkBufferCreateInfo const & rhs )
   22829     {
   22830       memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
   22831     }
   22832 
   22833     BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
   22834     {
   22835       memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
   22836       return *this;
   22837     }
   22838     BufferCreateInfo& setPNext( const void* pNext_ )
   22839     {
   22840       pNext = pNext_;
   22841       return *this;
   22842     }
   22843 
   22844     BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
   22845     {
   22846       flags = flags_;
   22847       return *this;
   22848     }
   22849 
   22850     BufferCreateInfo& setSize( DeviceSize size_ )
   22851     {
   22852       size = size_;
   22853       return *this;
   22854     }
   22855 
   22856     BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
   22857     {
   22858       usage = usage_;
   22859       return *this;
   22860     }
   22861 
   22862     BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
   22863     {
   22864       sharingMode = sharingMode_;
   22865       return *this;
   22866     }
   22867 
   22868     BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
   22869     {
   22870       queueFamilyIndexCount = queueFamilyIndexCount_;
   22871       return *this;
   22872     }
   22873 
   22874     BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
   22875     {
   22876       pQueueFamilyIndices = pQueueFamilyIndices_;
   22877       return *this;
   22878     }
   22879 
   22880     operator VkBufferCreateInfo const&() const
   22881     {
   22882       return *reinterpret_cast<const VkBufferCreateInfo*>(this);
   22883     }
   22884 
   22885     operator VkBufferCreateInfo &()
   22886     {
   22887       return *reinterpret_cast<VkBufferCreateInfo*>(this);
   22888     }
   22889 
   22890     bool operator==( BufferCreateInfo const& rhs ) const
   22891     {
   22892       return ( sType == rhs.sType )
   22893           && ( pNext == rhs.pNext )
   22894           && ( flags == rhs.flags )
   22895           && ( size == rhs.size )
   22896           && ( usage == rhs.usage )
   22897           && ( sharingMode == rhs.sharingMode )
   22898           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
   22899           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
   22900     }
   22901 
   22902     bool operator!=( BufferCreateInfo const& rhs ) const
   22903     {
   22904       return !operator==( rhs );
   22905     }
   22906 
   22907   private:
   22908     StructureType sType = StructureType::eBufferCreateInfo;
   22909 
   22910   public:
   22911     const void* pNext = nullptr;
   22912     BufferCreateFlags flags;
   22913     DeviceSize size;
   22914     BufferUsageFlags usage;
   22915     SharingMode sharingMode;
   22916     uint32_t queueFamilyIndexCount;
   22917     const uint32_t* pQueueFamilyIndices;
   22918   };
   22919   static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
   22920 
   22921   enum class ShaderStageFlagBits
   22922   {
   22923     eVertex = VK_SHADER_STAGE_VERTEX_BIT,
   22924     eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
   22925     eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
   22926     eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
   22927     eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
   22928     eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
   22929     eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
   22930     eAll = VK_SHADER_STAGE_ALL,
   22931     eRaygenNV = VK_SHADER_STAGE_RAYGEN_BIT_NV,
   22932     eAnyHitNV = VK_SHADER_STAGE_ANY_HIT_BIT_NV,
   22933     eClosestHitNV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,
   22934     eMissNV = VK_SHADER_STAGE_MISS_BIT_NV,
   22935     eIntersectionNV = VK_SHADER_STAGE_INTERSECTION_BIT_NV,
   22936     eCallableNV = VK_SHADER_STAGE_CALLABLE_BIT_NV,
   22937     eTaskNV = VK_SHADER_STAGE_TASK_BIT_NV,
   22938     eMeshNV = VK_SHADER_STAGE_MESH_BIT_NV
   22939   };
   22940 
   22941   using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
   22942 
   22943   VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
   22944   {
   22945     return ShaderStageFlags( bit0 ) | bit1;
   22946   }
   22947 
   22948   VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
   22949   {
   22950     return ~( ShaderStageFlags( bits ) );
   22951   }
   22952 
   22953   template <> struct FlagTraits<ShaderStageFlagBits>
   22954   {
   22955     enum
   22956     {
   22957       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) | VkFlags(ShaderStageFlagBits::eRaygenNV) | VkFlags(ShaderStageFlagBits::eAnyHitNV) | VkFlags(ShaderStageFlagBits::eClosestHitNV) | VkFlags(ShaderStageFlagBits::eMissNV) | VkFlags(ShaderStageFlagBits::eIntersectionNV) | VkFlags(ShaderStageFlagBits::eCallableNV) | VkFlags(ShaderStageFlagBits::eTaskNV) | VkFlags(ShaderStageFlagBits::eMeshNV)
   22958     };
   22959   };
   22960 
   22961   struct DescriptorSetLayoutBinding
   22962   {
   22963     DescriptorSetLayoutBinding( uint32_t binding_ = 0,
   22964                                 DescriptorType descriptorType_ = DescriptorType::eSampler,
   22965                                 uint32_t descriptorCount_ = 0,
   22966                                 ShaderStageFlags stageFlags_ = ShaderStageFlags(),
   22967                                 const Sampler* pImmutableSamplers_ = nullptr )
   22968       : binding( binding_ )
   22969       , descriptorType( descriptorType_ )
   22970       , descriptorCount( descriptorCount_ )
   22971       , stageFlags( stageFlags_ )
   22972       , pImmutableSamplers( pImmutableSamplers_ )
   22973     {
   22974     }
   22975 
   22976     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
   22977     {
   22978       memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
   22979     }
   22980 
   22981     DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
   22982     {
   22983       memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
   22984       return *this;
   22985     }
   22986     DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
   22987     {
   22988       binding = binding_;
   22989       return *this;
   22990     }
   22991 
   22992     DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
   22993     {
   22994       descriptorType = descriptorType_;
   22995       return *this;
   22996     }
   22997 
   22998     DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
   22999     {
   23000       descriptorCount = descriptorCount_;
   23001       return *this;
   23002     }
   23003 
   23004     DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
   23005     {
   23006       stageFlags = stageFlags_;
   23007       return *this;
   23008     }
   23009 
   23010     DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
   23011     {
   23012       pImmutableSamplers = pImmutableSamplers_;
   23013       return *this;
   23014     }
   23015 
   23016     operator VkDescriptorSetLayoutBinding const&() const
   23017     {
   23018       return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
   23019     }
   23020 
   23021     operator VkDescriptorSetLayoutBinding &()
   23022     {
   23023       return *reinterpret_cast<VkDescriptorSetLayoutBinding*>(this);
   23024     }
   23025 
   23026     bool operator==( DescriptorSetLayoutBinding const& rhs ) const
   23027     {
   23028       return ( binding == rhs.binding )
   23029           && ( descriptorType == rhs.descriptorType )
   23030           && ( descriptorCount == rhs.descriptorCount )
   23031           && ( stageFlags == rhs.stageFlags )
   23032           && ( pImmutableSamplers == rhs.pImmutableSamplers );
   23033     }
   23034 
   23035     bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
   23036     {
   23037       return !operator==( rhs );
   23038     }
   23039 
   23040     uint32_t binding;
   23041     DescriptorType descriptorType;
   23042     uint32_t descriptorCount;
   23043     ShaderStageFlags stageFlags;
   23044     const Sampler* pImmutableSamplers;
   23045   };
   23046   static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
   23047 
   23048   struct PipelineShaderStageCreateInfo
   23049   {
   23050     PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(),
   23051                                    ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex,
   23052                                    ShaderModule module_ = ShaderModule(),
   23053                                    const char* pName_ = nullptr,
   23054                                    const SpecializationInfo* pSpecializationInfo_ = nullptr )
   23055       : flags( flags_ )
   23056       , stage( stage_ )
   23057       , module( module_ )
   23058       , pName( pName_ )
   23059       , pSpecializationInfo( pSpecializationInfo_ )
   23060     {
   23061     }
   23062 
   23063     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
   23064     {
   23065       memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
   23066     }
   23067 
   23068     PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
   23069     {
   23070       memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
   23071       return *this;
   23072     }
   23073     PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
   23074     {
   23075       pNext = pNext_;
   23076       return *this;
   23077     }
   23078 
   23079     PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
   23080     {
   23081       flags = flags_;
   23082       return *this;
   23083     }
   23084 
   23085     PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
   23086     {
   23087       stage = stage_;
   23088       return *this;
   23089     }
   23090 
   23091     PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
   23092     {
   23093       module = module_;
   23094       return *this;
   23095     }
   23096 
   23097     PipelineShaderStageCreateInfo& setPName( const char* pName_ )
   23098     {
   23099       pName = pName_;
   23100       return *this;
   23101     }
   23102 
   23103     PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
   23104     {
   23105       pSpecializationInfo = pSpecializationInfo_;
   23106       return *this;
   23107     }
   23108 
   23109     operator VkPipelineShaderStageCreateInfo const&() const
   23110     {
   23111       return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
   23112     }
   23113 
   23114     operator VkPipelineShaderStageCreateInfo &()
   23115     {
   23116       return *reinterpret_cast<VkPipelineShaderStageCreateInfo*>(this);
   23117     }
   23118 
   23119     bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
   23120     {
   23121       return ( sType == rhs.sType )
   23122           && ( pNext == rhs.pNext )
   23123           && ( flags == rhs.flags )
   23124           && ( stage == rhs.stage )
   23125           && ( module == rhs.module )
   23126           && ( pName == rhs.pName )
   23127           && ( pSpecializationInfo == rhs.pSpecializationInfo );
   23128     }
   23129 
   23130     bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
   23131     {
   23132       return !operator==( rhs );
   23133     }
   23134 
   23135   private:
   23136     StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
   23137 
   23138   public:
   23139     const void* pNext = nullptr;
   23140     PipelineShaderStageCreateFlags flags;
   23141     ShaderStageFlagBits stage;
   23142     ShaderModule module;
   23143     const char* pName;
   23144     const SpecializationInfo* pSpecializationInfo;
   23145   };
   23146   static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
   23147 
   23148   struct PushConstantRange
   23149   {
   23150     PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(),
   23151                        uint32_t offset_ = 0,
   23152                        uint32_t size_ = 0 )
   23153       : stageFlags( stageFlags_ )
   23154       , offset( offset_ )
   23155       , size( size_ )
   23156     {
   23157     }
   23158 
   23159     PushConstantRange( VkPushConstantRange const & rhs )
   23160     {
   23161       memcpy( this, &rhs, sizeof( PushConstantRange ) );
   23162     }
   23163 
   23164     PushConstantRange& operator=( VkPushConstantRange const & rhs )
   23165     {
   23166       memcpy( this, &rhs, sizeof( PushConstantRange ) );
   23167       return *this;
   23168     }
   23169     PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
   23170     {
   23171       stageFlags = stageFlags_;
   23172       return *this;
   23173     }
   23174 
   23175     PushConstantRange& setOffset( uint32_t offset_ )
   23176     {
   23177       offset = offset_;
   23178       return *this;
   23179     }
   23180 
   23181     PushConstantRange& setSize( uint32_t size_ )
   23182     {
   23183       size = size_;
   23184       return *this;
   23185     }
   23186 
   23187     operator VkPushConstantRange const&() const
   23188     {
   23189       return *reinterpret_cast<const VkPushConstantRange*>(this);
   23190     }
   23191 
   23192     operator VkPushConstantRange &()
   23193     {
   23194       return *reinterpret_cast<VkPushConstantRange*>(this);
   23195     }
   23196 
   23197     bool operator==( PushConstantRange const& rhs ) const
   23198     {
   23199       return ( stageFlags == rhs.stageFlags )
   23200           && ( offset == rhs.offset )
   23201           && ( size == rhs.size );
   23202     }
   23203 
   23204     bool operator!=( PushConstantRange const& rhs ) const
   23205     {
   23206       return !operator==( rhs );
   23207     }
   23208 
   23209     ShaderStageFlags stageFlags;
   23210     uint32_t offset;
   23211     uint32_t size;
   23212   };
   23213   static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
   23214 
   23215   struct PipelineLayoutCreateInfo
   23216   {
   23217     PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(),
   23218                               uint32_t setLayoutCount_ = 0,
   23219                               const DescriptorSetLayout* pSetLayouts_ = nullptr,
   23220                               uint32_t pushConstantRangeCount_ = 0,
   23221                               const PushConstantRange* pPushConstantRanges_ = nullptr )
   23222       : flags( flags_ )
   23223       , setLayoutCount( setLayoutCount_ )
   23224       , pSetLayouts( pSetLayouts_ )
   23225       , pushConstantRangeCount( pushConstantRangeCount_ )
   23226       , pPushConstantRanges( pPushConstantRanges_ )
   23227     {
   23228     }
   23229 
   23230     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
   23231     {
   23232       memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
   23233     }
   23234 
   23235     PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
   23236     {
   23237       memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
   23238       return *this;
   23239     }
   23240     PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
   23241     {
   23242       pNext = pNext_;
   23243       return *this;
   23244     }
   23245 
   23246     PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
   23247     {
   23248       flags = flags_;
   23249       return *this;
   23250     }
   23251 
   23252     PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
   23253     {
   23254       setLayoutCount = setLayoutCount_;
   23255       return *this;
   23256     }
   23257 
   23258     PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
   23259     {
   23260       pSetLayouts = pSetLayouts_;
   23261       return *this;
   23262     }
   23263 
   23264     PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
   23265     {
   23266       pushConstantRangeCount = pushConstantRangeCount_;
   23267       return *this;
   23268     }
   23269 
   23270     PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
   23271     {
   23272       pPushConstantRanges = pPushConstantRanges_;
   23273       return *this;
   23274     }
   23275 
   23276     operator VkPipelineLayoutCreateInfo const&() const
   23277     {
   23278       return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
   23279     }
   23280 
   23281     operator VkPipelineLayoutCreateInfo &()
   23282     {
   23283       return *reinterpret_cast<VkPipelineLayoutCreateInfo*>(this);
   23284     }
   23285 
   23286     bool operator==( PipelineLayoutCreateInfo const& rhs ) const
   23287     {
   23288       return ( sType == rhs.sType )
   23289           && ( pNext == rhs.pNext )
   23290           && ( flags == rhs.flags )
   23291           && ( setLayoutCount == rhs.setLayoutCount )
   23292           && ( pSetLayouts == rhs.pSetLayouts )
   23293           && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
   23294           && ( pPushConstantRanges == rhs.pPushConstantRanges );
   23295     }
   23296 
   23297     bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
   23298     {
   23299       return !operator==( rhs );
   23300     }
   23301 
   23302   private:
   23303     StructureType sType = StructureType::ePipelineLayoutCreateInfo;
   23304 
   23305   public:
   23306     const void* pNext = nullptr;
   23307     PipelineLayoutCreateFlags flags;
   23308     uint32_t setLayoutCount;
   23309     const DescriptorSetLayout* pSetLayouts;
   23310     uint32_t pushConstantRangeCount;
   23311     const PushConstantRange* pPushConstantRanges;
   23312   };
   23313   static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
   23314 
   23315   struct ShaderStatisticsInfoAMD
   23316   {
   23317     operator VkShaderStatisticsInfoAMD const&() const
   23318     {
   23319       return *reinterpret_cast<const VkShaderStatisticsInfoAMD*>(this);
   23320     }
   23321 
   23322     operator VkShaderStatisticsInfoAMD &()
   23323     {
   23324       return *reinterpret_cast<VkShaderStatisticsInfoAMD*>(this);
   23325     }
   23326 
   23327     bool operator==( ShaderStatisticsInfoAMD const& rhs ) const
   23328     {
   23329       return ( shaderStageMask == rhs.shaderStageMask )
   23330           && ( resourceUsage == rhs.resourceUsage )
   23331           && ( numPhysicalVgprs == rhs.numPhysicalVgprs )
   23332           && ( numPhysicalSgprs == rhs.numPhysicalSgprs )
   23333           && ( numAvailableVgprs == rhs.numAvailableVgprs )
   23334           && ( numAvailableSgprs == rhs.numAvailableSgprs )
   23335           && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 );
   23336     }
   23337 
   23338     bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const
   23339     {
   23340       return !operator==( rhs );
   23341     }
   23342 
   23343     ShaderStageFlags shaderStageMask;
   23344     ShaderResourceUsageAMD resourceUsage;
   23345     uint32_t numPhysicalVgprs;
   23346     uint32_t numPhysicalSgprs;
   23347     uint32_t numAvailableVgprs;
   23348     uint32_t numAvailableSgprs;
   23349     uint32_t computeWorkGroupSize[3];
   23350   };
   23351   static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" );
   23352 
   23353   enum class ImageUsageFlagBits
   23354   {
   23355     eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
   23356     eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
   23357     eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
   23358     eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
   23359     eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
   23360     eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
   23361     eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
   23362     eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
   23363     eShadingRateImageNV = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
   23364   };
   23365 
   23366   using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
   23367 
   23368   VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
   23369   {
   23370     return ImageUsageFlags( bit0 ) | bit1;
   23371   }
   23372 
   23373   VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
   23374   {
   23375     return ~( ImageUsageFlags( bits ) );
   23376   }
   23377 
   23378   template <> struct FlagTraits<ImageUsageFlagBits>
   23379   {
   23380     enum
   23381     {
   23382       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) | VkFlags(ImageUsageFlagBits::eShadingRateImageNV)
   23383     };
   23384   };
   23385 
   23386   struct SharedPresentSurfaceCapabilitiesKHR
   23387   {
   23388     operator VkSharedPresentSurfaceCapabilitiesKHR const&() const
   23389     {
   23390       return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
   23391     }
   23392 
   23393     operator VkSharedPresentSurfaceCapabilitiesKHR &()
   23394     {
   23395       return *reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR*>(this);
   23396     }
   23397 
   23398     bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
   23399     {
   23400       return ( sType == rhs.sType )
   23401           && ( pNext == rhs.pNext )
   23402           && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
   23403     }
   23404 
   23405     bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
   23406     {
   23407       return !operator==( rhs );
   23408     }
   23409 
   23410   private:
   23411     StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
   23412 
   23413   public:
   23414     void* pNext = nullptr;
   23415     ImageUsageFlags sharedPresentSupportedUsageFlags;
   23416   };
   23417   static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
   23418 
   23419   struct ImageViewUsageCreateInfo
   23420   {
   23421     ImageViewUsageCreateInfo( ImageUsageFlags usage_ = ImageUsageFlags() )
   23422       : usage( usage_ )
   23423     {
   23424     }
   23425 
   23426     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs )
   23427     {
   23428       memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
   23429     }
   23430 
   23431     ImageViewUsageCreateInfo& operator=( VkImageViewUsageCreateInfo const & rhs )
   23432     {
   23433       memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
   23434       return *this;
   23435     }
   23436     ImageViewUsageCreateInfo& setPNext( const void* pNext_ )
   23437     {
   23438       pNext = pNext_;
   23439       return *this;
   23440     }
   23441 
   23442     ImageViewUsageCreateInfo& setUsage( ImageUsageFlags usage_ )
   23443     {
   23444       usage = usage_;
   23445       return *this;
   23446     }
   23447 
   23448     operator VkImageViewUsageCreateInfo const&() const
   23449     {
   23450       return *reinterpret_cast<const VkImageViewUsageCreateInfo*>(this);
   23451     }
   23452 
   23453     operator VkImageViewUsageCreateInfo &()
   23454     {
   23455       return *reinterpret_cast<VkImageViewUsageCreateInfo*>(this);
   23456     }
   23457 
   23458     bool operator==( ImageViewUsageCreateInfo const& rhs ) const
   23459     {
   23460       return ( sType == rhs.sType )
   23461           && ( pNext == rhs.pNext )
   23462           && ( usage == rhs.usage );
   23463     }
   23464 
   23465     bool operator!=( ImageViewUsageCreateInfo const& rhs ) const
   23466     {
   23467       return !operator==( rhs );
   23468     }
   23469 
   23470   private:
   23471     StructureType sType = StructureType::eImageViewUsageCreateInfo;
   23472 
   23473   public:
   23474     const void* pNext = nullptr;
   23475     ImageUsageFlags usage;
   23476   };
   23477   static_assert( sizeof( ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), "struct and wrapper have different size!" );
   23478 
   23479   using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
   23480 
   23481   enum class ImageCreateFlagBits
   23482   {
   23483     eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
   23484     eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
   23485     eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
   23486     eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
   23487     eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
   23488     eAlias = VK_IMAGE_CREATE_ALIAS_BIT,
   23489     eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT,
   23490     eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
   23491     eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
   23492     e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
   23493     e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
   23494     eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
   23495     eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
   23496     eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
   23497     eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
   23498     eProtected = VK_IMAGE_CREATE_PROTECTED_BIT,
   23499     eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT,
   23500     eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT,
   23501     eCornerSampledNV = VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,
   23502     eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
   23503   };
   23504 
   23505   using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
   23506 
   23507   VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
   23508   {
   23509     return ImageCreateFlags( bit0 ) | bit1;
   23510   }
   23511 
   23512   VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
   23513   {
   23514     return ~( ImageCreateFlags( bits ) );
   23515   }
   23516 
   23517   template <> struct FlagTraits<ImageCreateFlagBits>
   23518   {
   23519     enum
   23520     {
   23521       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::eCornerSampledNV) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT)
   23522     };
   23523   };
   23524 
   23525   struct PhysicalDeviceImageFormatInfo2
   23526   {
   23527     PhysicalDeviceImageFormatInfo2( Format format_ = Format::eUndefined,
   23528                                     ImageType type_ = ImageType::e1D,
   23529                                     ImageTiling tiling_ = ImageTiling::eOptimal,
   23530                                     ImageUsageFlags usage_ = ImageUsageFlags(),
   23531                                     ImageCreateFlags flags_ = ImageCreateFlags() )
   23532       : format( format_ )
   23533       , type( type_ )
   23534       , tiling( tiling_ )
   23535       , usage( usage_ )
   23536       , flags( flags_ )
   23537     {
   23538     }
   23539 
   23540     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs )
   23541     {
   23542       memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
   23543     }
   23544 
   23545     PhysicalDeviceImageFormatInfo2& operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs )
   23546     {
   23547       memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
   23548       return *this;
   23549     }
   23550     PhysicalDeviceImageFormatInfo2& setPNext( const void* pNext_ )
   23551     {
   23552       pNext = pNext_;
   23553       return *this;
   23554     }
   23555 
   23556     PhysicalDeviceImageFormatInfo2& setFormat( Format format_ )
   23557     {
   23558       format = format_;
   23559       return *this;
   23560     }
   23561 
   23562     PhysicalDeviceImageFormatInfo2& setType( ImageType type_ )
   23563     {
   23564       type = type_;
   23565       return *this;
   23566     }
   23567 
   23568     PhysicalDeviceImageFormatInfo2& setTiling( ImageTiling tiling_ )
   23569     {
   23570       tiling = tiling_;
   23571       return *this;
   23572     }
   23573 
   23574     PhysicalDeviceImageFormatInfo2& setUsage( ImageUsageFlags usage_ )
   23575     {
   23576       usage = usage_;
   23577       return *this;
   23578     }
   23579 
   23580     PhysicalDeviceImageFormatInfo2& setFlags( ImageCreateFlags flags_ )
   23581     {
   23582       flags = flags_;
   23583       return *this;
   23584     }
   23585 
   23586     operator VkPhysicalDeviceImageFormatInfo2 const&() const
   23587     {
   23588       return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>(this);
   23589     }
   23590 
   23591     operator VkPhysicalDeviceImageFormatInfo2 &()
   23592     {
   23593       return *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2*>(this);
   23594     }
   23595 
   23596     bool operator==( PhysicalDeviceImageFormatInfo2 const& rhs ) const
   23597     {
   23598       return ( sType == rhs.sType )
   23599           && ( pNext == rhs.pNext )
   23600           && ( format == rhs.format )
   23601           && ( type == rhs.type )
   23602           && ( tiling == rhs.tiling )
   23603           && ( usage == rhs.usage )
   23604           && ( flags == rhs.flags );
   23605     }
   23606 
   23607     bool operator!=( PhysicalDeviceImageFormatInfo2 const& rhs ) const
   23608     {
   23609       return !operator==( rhs );
   23610     }
   23611 
   23612   private:
   23613     StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2;
   23614 
   23615   public:
   23616     const void* pNext = nullptr;
   23617     Format format;
   23618     ImageType type;
   23619     ImageTiling tiling;
   23620     ImageUsageFlags usage;
   23621     ImageCreateFlags flags;
   23622   };
   23623   static_assert( sizeof( PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), "struct and wrapper have different size!" );
   23624 
   23625   using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
   23626 
   23627   enum class PipelineCreateFlagBits
   23628   {
   23629     eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
   23630     eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
   23631     eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
   23632     eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
   23633     eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
   23634     eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE,
   23635     eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
   23636     eDeferCompileNV = VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV
   23637   };
   23638 
   23639   using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
   23640 
   23641   VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
   23642   {
   23643     return PipelineCreateFlags( bit0 ) | bit1;
   23644   }
   23645 
   23646   VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
   23647   {
   23648     return ~( PipelineCreateFlags( bits ) );
   23649   }
   23650 
   23651   template <> struct FlagTraits<PipelineCreateFlagBits>
   23652   {
   23653     enum
   23654     {
   23655       allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndex) | VkFlags(PipelineCreateFlagBits::eDispatchBase) | VkFlags(PipelineCreateFlagBits::eDeferCompileNV)
   23656     };
   23657   };
   23658 
   23659   struct ComputePipelineCreateInfo
   23660   {
   23661     ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(),
   23662                                PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(),
   23663                                PipelineLayout layout_ = PipelineLayout(),
   23664                                Pipeline basePipelineHandle_ = Pipeline(),
   23665                                int32_t basePipelineIndex_ = 0 )
   23666       : flags( flags_ )
   23667       , stage( stage_ )
   23668       , layout( layout_ )
   23669       , basePipelineHandle( basePipelineHandle_ )
   23670       , basePipelineIndex( basePipelineIndex_ )
   23671     {
   23672     }
   23673 
   23674     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
   23675     {
   23676       memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
   23677     }
   23678 
   23679     ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
   23680     {
   23681       memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
   23682       return *this;
   23683     }
   23684     ComputePipelineCreateInfo& setPNext( const void* pNext_ )
   23685     {
   23686       pNext = pNext_;
   23687       return *this;
   23688     }
   23689 
   23690     ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
   23691     {
   23692       flags = flags_;
   23693       return *this;
   23694     }
   23695 
   23696     ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
   23697     {
   23698       stage = stage_;
   23699       return *this;
   23700     }
   23701 
   23702     ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
   23703     {
   23704       layout = layout_;
   23705       return *this;
   23706     }
   23707 
   23708     ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
   23709     {
   23710       basePipelineHandle = basePipelineHandle_;
   23711       return *this;
   23712     }
   23713 
   23714     ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
   23715     {
   23716       basePipelineIndex = basePipelineIndex_;
   23717       return *this;
   23718     }
   23719 
   23720     operator VkComputePipelineCreateInfo const&() const
   23721     {
   23722       return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
   23723     }
   23724 
   23725     operator VkComputePipelineCreateInfo &()
   23726     {
   23727       return *reinterpret_cast<VkComputePipelineCreateInfo*>(this);
   23728     }
   23729 
   23730     bool operator==( ComputePipelineCreateInfo const& rhs ) const
   23731     {
   23732       return ( sType == rhs.sType )
   23733           && ( pNext == rhs.pNext )
   23734           && ( flags == rhs.flags )
   23735           && ( stage == rhs.stage )
   23736           && ( layout == rhs.layout )
   23737           && ( basePipelineHandle == rhs.basePipelineHandle )
   23738           && ( basePipelineIndex == rhs.basePipelineIndex );
   23739     }
   23740 
   23741     bool operator!=( ComputePipelineCreateInfo const& rhs ) const
   23742     {
   23743       return !operator==( rhs );
   23744     }
   23745 
   23746   private:
   23747     StructureType sType = StructureType::eComputePipelineCreateInfo;
   23748 
   23749   public:
   23750     const void* pNext = nullptr;
   23751     PipelineCreateFlags flags;
   23752     PipelineShaderStageCreateInfo stage;
   23753     PipelineLayout layout;
   23754     Pipeline basePipelineHandle;
   23755     int32_t basePipelineIndex;
   23756   };
   23757   static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
   23758 
   23759   enum class ColorComponentFlagBits
   23760   {
   23761     eR = VK_COLOR_COMPONENT_R_BIT,
   23762     eG = VK_COLOR_COMPONENT_G_BIT,
   23763     eB = VK_COLOR_COMPONENT_B_BIT,
   23764     eA = VK_COLOR_COMPONENT_A_BIT
   23765   };
   23766 
   23767   using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
   23768 
   23769   VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
   23770   {
   23771     return ColorComponentFlags( bit0 ) | bit1;
   23772   }
   23773 
   23774   VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
   23775   {
   23776     return ~( ColorComponentFlags( bits ) );
   23777   }
   23778 
   23779   template <> struct FlagTraits<ColorComponentFlagBits>
   23780   {
   23781     enum
   23782     {
   23783       allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
   23784     };
   23785   };
   23786 
   23787   struct PipelineColorBlendAttachmentState
   23788   {
   23789     PipelineColorBlendAttachmentState( Bool32 blendEnable_ = 0,
   23790                                        BlendFactor srcColorBlendFactor_ = BlendFactor::eZero,
   23791                                        BlendFactor dstColorBlendFactor_ = BlendFactor::eZero,
   23792                                        BlendOp colorBlendOp_ = BlendOp::eAdd,
   23793                                        BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero,
   23794                                        BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero,
   23795                                        BlendOp alphaBlendOp_ = BlendOp::eAdd,
   23796                                        ColorComponentFlags colorWriteMask_ = ColorComponentFlags() )
   23797       : blendEnable( blendEnable_ )
   23798       , srcColorBlendFactor( srcColorBlendFactor_ )
   23799       , dstColorBlendFactor( dstColorBlendFactor_ )
   23800       , colorBlendOp( colorBlendOp_ )
   23801       , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
   23802       , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
   23803       , alphaBlendOp( alphaBlendOp_ )
   23804       , colorWriteMask( colorWriteMask_ )
   23805     {
   23806     }
   23807 
   23808     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
   23809     {
   23810       memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
   23811     }
   23812 
   23813     PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
   23814     {
   23815       memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
   23816       return *this;
   23817     }
   23818     PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
   23819     {
   23820       blendEnable = blendEnable_;
   23821       return *this;
   23822     }
   23823 
   23824     PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
   23825     {
   23826       srcColorBlendFactor = srcColorBlendFactor_;
   23827       return *this;
   23828     }
   23829 
   23830     PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
   23831     {
   23832       dstColorBlendFactor = dstColorBlendFactor_;
   23833       return *this;
   23834     }
   23835 
   23836     PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
   23837     {
   23838       colorBlendOp = colorBlendOp_;
   23839       return *this;
   23840     }
   23841 
   23842     PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
   23843     {
   23844       srcAlphaBlendFactor = srcAlphaBlendFactor_;
   23845       return *this;
   23846     }
   23847 
   23848     PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
   23849     {
   23850       dstAlphaBlendFactor = dstAlphaBlendFactor_;
   23851       return *this;
   23852     }
   23853 
   23854     PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
   23855     {
   23856       alphaBlendOp = alphaBlendOp_;
   23857       return *this;
   23858     }
   23859 
   23860     PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
   23861     {
   23862       colorWriteMask = colorWriteMask_;
   23863       return *this;
   23864     }
   23865 
   23866     operator VkPipelineColorBlendAttachmentState const&() const
   23867     {
   23868       return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
   23869     }
   23870 
   23871     operator VkPipelineColorBlendAttachmentState &()
   23872     {
   23873       return *reinterpret_cast<VkPipelineColorBlendAttachmentState*>(this);
   23874     }
   23875 
   23876     bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
   23877     {
   23878       return ( blendEnable == rhs.blendEnable )
   23879           && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
   23880           && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
   23881           && ( colorBlendOp == rhs.colorBlendOp )
   23882           && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
   23883           && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
   23884           && ( alphaBlendOp == rhs.alphaBlendOp )
   23885           && ( colorWriteMask == rhs.colorWriteMask );
   23886     }
   23887 
   23888     bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
   23889     {
   23890       return !operator==( rhs );
   23891     }
   23892 
   23893     Bool32 blendEnable;
   23894     BlendFactor srcColorBlendFactor;
   23895     BlendFactor dstColorBlendFactor;
   23896     BlendOp colorBlendOp;
   23897     BlendFactor srcAlphaBlendFactor;
   23898     BlendFactor dstAlphaBlendFactor;
   23899     BlendOp alphaBlendOp;
   23900     ColorComponentFlags colorWriteMask;
   23901   };
   23902   static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
   23903 
   23904   struct PipelineColorBlendStateCreateInfo
   23905   {
   23906     PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_ = PipelineColorBlendStateCreateFlags(),
   23907                                        Bool32 logicOpEnable_ = 0,
   23908                                        LogicOp logicOp_ = LogicOp::eClear,
   23909                                        uint32_t attachmentCount_ = 0,
   23910                                        const PipelineColorBlendAttachmentState* pAttachments_ = nullptr,
   23911                                        std::array<float,4> const& blendConstants_ = { { 0, 0, 0, 0 } } )
   23912       : flags( flags_ )
   23913       , logicOpEnable( logicOpEnable_ )
   23914       , logicOp( logicOp_ )
   23915       , attachmentCount( attachmentCount_ )
   23916       , pAttachments( pAttachments_ )
   23917     {
   23918       memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
   23919     }
   23920 
   23921     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
   23922     {
   23923       memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
   23924     }
   23925 
   23926     PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
   23927     {
   23928       memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
   23929       return *this;
   23930     }
   23931     PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
   23932     {
   23933       pNext = pNext_;
   23934       return *this;
   23935     }
   23936 
   23937     PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
   23938     {
   23939       flags = flags_;
   23940       return *this;
   23941     }
   23942 
   23943     PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
   23944     {
   23945       logicOpEnable = logicOpEnable_;
   23946       return *this;
   23947     }
   23948 
   23949     PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
   23950     {
   23951       logicOp = logicOp_;
   23952       return *this;
   23953     }
   23954 
   23955     PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
   23956     {
   23957       attachmentCount = attachmentCount_;
   23958       return *this;
   23959     }
   23960 
   23961     PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
   23962     {
   23963       pAttachments = pAttachments_;
   23964       return *this;
   23965     }
   23966 
   23967     PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
   23968     {
   23969       memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
   23970       return *this;
   23971     }
   23972 
   23973     operator VkPipelineColorBlendStateCreateInfo const&() const
   23974     {
   23975       return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
   23976     }
   23977 
   23978     operator VkPipelineColorBlendStateCreateInfo &()
   23979     {
   23980       return *reinterpret_cast<VkPipelineColorBlendStateCreateInfo*>(this);
   23981     }
   23982 
   23983     bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
   23984     {
   23985       return ( sType == rhs.sType )
   23986           && ( pNext == rhs.pNext )
   23987           && ( flags == rhs.flags )
   23988           && ( logicOpEnable == rhs.logicOpEnable )
   23989           && ( logicOp == rhs.logicOp )
   23990           && ( attachmentCount == rhs.attachmentCount )
   23991           && ( pAttachments == rhs.pAttachments )
   23992           && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
   23993     }
   23994 
   23995     bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
   23996     {
   23997       return !operator==( rhs );
   23998     }
   23999 
   24000   private:
   24001     StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
   24002 
   24003   public:
   24004     const void* pNext = nullptr;
   24005     PipelineColorBlendStateCreateFlags flags;
   24006     Bool32 logicOpEnable;
   24007     LogicOp logicOp;
   24008     uint32_t attachmentCount;
   24009     const PipelineColorBlendAttachmentState* pAttachments;
   24010     float blendConstants[4];
   24011   };
   24012   static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
   24013 
   24014   enum class FenceCreateFlagBits
   24015   {
   24016     eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
   24017   };
   24018 
   24019   using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
   24020 
   24021   VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
   24022   {
   24023     return FenceCreateFlags( bit0 ) | bit1;
   24024   }
   24025 
   24026   VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
   24027   {
   24028     return ~( FenceCreateFlags( bits ) );
   24029   }
   24030 
   24031   template <> struct FlagTraits<FenceCreateFlagBits>
   24032   {
   24033     enum
   24034     {
   24035       allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
   24036     };
   24037   };
   24038 
   24039   struct FenceCreateInfo
   24040   {
   24041     FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
   24042       : flags( flags_ )
   24043     {
   24044     }
   24045 
   24046     FenceCreateInfo( VkFenceCreateInfo const & rhs )
   24047     {
   24048       memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
   24049     }
   24050 
   24051     FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
   24052     {
   24053       memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
   24054       return *this;
   24055     }
   24056     FenceCreateInfo& setPNext( const void* pNext_ )
   24057     {
   24058       pNext = pNext_;
   24059       return *this;
   24060     }
   24061 
   24062     FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
   24063     {
   24064       flags = flags_;
   24065       return *this;
   24066     }
   24067 
   24068     operator VkFenceCreateInfo const&() const
   24069     {
   24070       return *reinterpret_cast<const VkFenceCreateInfo*>(this);
   24071     }
   24072 
   24073     operator VkFenceCreateInfo &()
   24074     {
   24075       return *reinterpret_cast<VkFenceCreateInfo*>(this);
   24076     }
   24077 
   24078     bool operator==( FenceCreateInfo const& rhs ) const
   24079     {
   24080       return ( sType == rhs.sType )
   24081           && ( pNext == rhs.pNext )
   24082           && ( flags == rhs.flags );
   24083     }
   24084 
   24085     bool operator!=( FenceCreateInfo const& rhs ) const
   24086     {
   24087       return !operator==( rhs );
   24088     }
   24089 
   24090   private:
   24091     StructureType sType = StructureType::eFenceCreateInfo;
   24092 
   24093   public:
   24094     const void* pNext = nullptr;
   24095     FenceCreateFlags flags;
   24096   };
   24097   static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
   24098 
   24099   enum class FormatFeatureFlagBits
   24100   {
   24101     eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
   24102     eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
   24103     eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
   24104     eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
   24105     eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
   24106     eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
   24107     eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
   24108     eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
   24109     eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
   24110     eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
   24111     eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
   24112     eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
   24113     eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
   24114     eTransferSrc = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
   24115     eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
   24116     eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
   24117     eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
   24118     eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
   24119     eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
   24120     eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
   24121     eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
   24122     eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
   24123     eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
   24124     eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
   24125     eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
   24126     eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
   24127     eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
   24128     eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT,
   24129     eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
   24130     eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
   24131     eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
   24132     eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
   24133     eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
   24134   };
   24135 
   24136   using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
   24137 
   24138   VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
   24139   {
   24140     return FormatFeatureFlags( bit0 ) | bit1;
   24141   }
   24142 
   24143   VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
   24144   {
   24145     return ~( FormatFeatureFlags( bits ) );
   24146   }
   24147 
   24148   template <> struct FlagTraits<FormatFeatureFlagBits>
   24149   {
   24150     enum
   24151     {
   24152       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)
   24153     };
   24154   };
   24155 
   24156   struct FormatProperties
   24157   {
   24158     operator VkFormatProperties const&() const
   24159     {
   24160       return *reinterpret_cast<const VkFormatProperties*>(this);
   24161     }
   24162 
   24163     operator VkFormatProperties &()
   24164     {
   24165       return *reinterpret_cast<VkFormatProperties*>(this);
   24166     }
   24167 
   24168     bool operator==( FormatProperties const& rhs ) const
   24169     {
   24170       return ( linearTilingFeatures == rhs.linearTilingFeatures )
   24171           && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
   24172           && ( bufferFeatures == rhs.bufferFeatures );
   24173     }
   24174 
   24175     bool operator!=( FormatProperties const& rhs ) const
   24176     {
   24177       return !operator==( rhs );
   24178     }
   24179 
   24180     FormatFeatureFlags linearTilingFeatures;
   24181     FormatFeatureFlags optimalTilingFeatures;
   24182     FormatFeatureFlags bufferFeatures;
   24183   };
   24184   static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
   24185 
   24186   struct FormatProperties2
   24187   {
   24188     operator VkFormatProperties2 const&() const
   24189     {
   24190       return *reinterpret_cast<const VkFormatProperties2*>(this);
   24191     }
   24192 
   24193     operator VkFormatProperties2 &()
   24194     {
   24195       return *reinterpret_cast<VkFormatProperties2*>(this);
   24196     }
   24197 
   24198     bool operator==( FormatProperties2 const& rhs ) const
   24199     {
   24200       return ( sType == rhs.sType )
   24201           && ( pNext == rhs.pNext )
   24202           && ( formatProperties == rhs.formatProperties );
   24203     }
   24204 
   24205     bool operator!=( FormatProperties2 const& rhs ) const
   24206     {
   24207       return !operator==( rhs );
   24208     }
   24209 
   24210   private:
   24211     StructureType sType = StructureType::eFormatProperties2;
   24212 
   24213   public:
   24214     void* pNext = nullptr;
   24215     FormatProperties formatProperties;
   24216   };
   24217   static_assert( sizeof( FormatProperties2 ) == sizeof( VkFormatProperties2 ), "struct and wrapper have different size!" );
   24218 
   24219   using FormatProperties2KHR = FormatProperties2;
   24220 
   24221   struct DrmFormatModifierPropertiesEXT
   24222   {
   24223     operator VkDrmFormatModifierPropertiesEXT const&() const
   24224     {
   24225       return *reinterpret_cast<const VkDrmFormatModifierPropertiesEXT*>(this);
   24226     }
   24227 
   24228     operator VkDrmFormatModifierPropertiesEXT &()
   24229     {
   24230       return *reinterpret_cast<VkDrmFormatModifierPropertiesEXT*>(this);
   24231     }
   24232 
   24233     bool operator==( DrmFormatModifierPropertiesEXT const& rhs ) const
   24234     {
   24235       return ( drmFormatModifier == rhs.drmFormatModifier )
   24236           && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount )
   24237           && ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
   24238     }
   24239 
   24240     bool operator!=( DrmFormatModifierPropertiesEXT const& rhs ) const
   24241     {
   24242       return !operator==( rhs );
   24243     }
   24244 
   24245     uint64_t drmFormatModifier;
   24246     uint32_t drmFormatModifierPlaneCount;
   24247     FormatFeatureFlags drmFormatModifierTilingFeatures;
   24248   };
   24249   static_assert( sizeof( DrmFormatModifierPropertiesEXT ) == sizeof( VkDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" );
   24250 
   24251   struct DrmFormatModifierPropertiesListEXT
   24252   {
   24253     DrmFormatModifierPropertiesListEXT( uint32_t drmFormatModifierCount_ = 0,
   24254                                         DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties_ = nullptr )
   24255       : drmFormatModifierCount( drmFormatModifierCount_ )
   24256       , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ )
   24257     {
   24258     }
   24259 
   24260     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs )
   24261     {
   24262       memcpy( this, &rhs, sizeof( DrmFormatModifierPropertiesListEXT ) );
   24263     }
   24264 
   24265     DrmFormatModifierPropertiesListEXT& operator=( VkDrmFormatModifierPropertiesListEXT const & rhs )
   24266     {
   24267       memcpy( this, &rhs, sizeof( DrmFormatModifierPropertiesListEXT ) );
   24268       return *this;
   24269     }
   24270     DrmFormatModifierPropertiesListEXT& setPNext( void* pNext_ )
   24271     {
   24272       pNext = pNext_;
   24273       return *this;
   24274     }
   24275 
   24276     DrmFormatModifierPropertiesListEXT& setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ )
   24277     {
   24278       drmFormatModifierCount = drmFormatModifierCount_;
   24279       return *this;
   24280     }
   24281 
   24282     DrmFormatModifierPropertiesListEXT& setPDrmFormatModifierProperties( DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties_ )
   24283     {
   24284       pDrmFormatModifierProperties = pDrmFormatModifierProperties_;
   24285       return *this;
   24286     }
   24287 
   24288     operator VkDrmFormatModifierPropertiesListEXT const&() const
   24289     {
   24290       return *reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT*>(this);
   24291     }
   24292 
   24293     operator VkDrmFormatModifierPropertiesListEXT &()
   24294     {
   24295       return *reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>(this);
   24296     }
   24297 
   24298     bool operator==( DrmFormatModifierPropertiesListEXT const& rhs ) const
   24299     {
   24300       return ( sType == rhs.sType )
   24301           && ( pNext == rhs.pNext )
   24302           && ( drmFormatModifierCount == rhs.drmFormatModifierCount )
   24303           && ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
   24304     }
   24305 
   24306     bool operator!=( DrmFormatModifierPropertiesListEXT const& rhs ) const
   24307     {
   24308       return !operator==( rhs );
   24309     }
   24310 
   24311   private:
   24312     StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT;
   24313 
   24314   public:
   24315     void* pNext = nullptr;
   24316     uint32_t drmFormatModifierCount;
   24317     DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;
   24318   };
   24319   static_assert( sizeof( DrmFormatModifierPropertiesListEXT ) == sizeof( VkDrmFormatModifierPropertiesListEXT ), "struct and wrapper have different size!" );
   24320 
   24321   enum class QueryControlFlagBits
   24322   {
   24323     ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
   24324   };
   24325 
   24326   using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
   24327 
   24328   VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
   24329   {
   24330     return QueryControlFlags( bit0 ) | bit1;
   24331   }
   24332 
   24333   VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
   24334   {
   24335     return ~( QueryControlFlags( bits ) );
   24336   }
   24337 
   24338   template <> struct FlagTraits<QueryControlFlagBits>
   24339   {
   24340     enum
   24341     {
   24342       allFlags = VkFlags(QueryControlFlagBits::ePrecise)
   24343     };
   24344   };
   24345 
   24346   enum class QueryResultFlagBits
   24347   {
   24348     e64 = VK_QUERY_RESULT_64_BIT,
   24349     eWait = VK_QUERY_RESULT_WAIT_BIT,
   24350     eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
   24351     ePartial = VK_QUERY_RESULT_PARTIAL_BIT
   24352   };
   24353 
   24354   using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
   24355 
   24356   VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
   24357   {
   24358     return QueryResultFlags( bit0 ) | bit1;
   24359   }
   24360 
   24361   VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
   24362   {
   24363     return ~( QueryResultFlags( bits ) );
   24364   }
   24365 
   24366   template <> struct FlagTraits<QueryResultFlagBits>
   24367   {
   24368     enum
   24369     {
   24370       allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
   24371     };
   24372   };
   24373 
   24374   enum class CommandBufferUsageFlagBits
   24375   {
   24376     eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
   24377     eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
   24378     eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
   24379   };
   24380 
   24381   using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
   24382 
   24383   VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
   24384   {
   24385     return CommandBufferUsageFlags( bit0 ) | bit1;
   24386   }
   24387 
   24388   VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
   24389   {
   24390     return ~( CommandBufferUsageFlags( bits ) );
   24391   }
   24392 
   24393   template <> struct FlagTraits<CommandBufferUsageFlagBits>
   24394   {
   24395     enum
   24396     {
   24397       allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
   24398     };
   24399   };
   24400 
   24401   enum class QueryPipelineStatisticFlagBits
   24402   {
   24403     eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
   24404     eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
   24405     eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
   24406     eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
   24407     eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
   24408     eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
   24409     eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
   24410     eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
   24411     eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
   24412     eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
   24413     eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
   24414   };
   24415 
   24416   using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
   24417 
   24418   VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
   24419   {
   24420     return QueryPipelineStatisticFlags( bit0 ) | bit1;
   24421   }
   24422 
   24423   VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
   24424   {
   24425     return ~( QueryPipelineStatisticFlags( bits ) );
   24426   }
   24427 
   24428   template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
   24429   {
   24430     enum
   24431     {
   24432       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)
   24433     };
   24434   };
   24435 
   24436   struct CommandBufferInheritanceInfo
   24437   {
   24438     CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(),
   24439                                   uint32_t subpass_ = 0,
   24440                                   Framebuffer framebuffer_ = Framebuffer(),
   24441                                   Bool32 occlusionQueryEnable_ = 0,
   24442                                   QueryControlFlags queryFlags_ = QueryControlFlags(),
   24443                                   QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
   24444       : renderPass( renderPass_ )
   24445       , subpass( subpass_ )
   24446       , framebuffer( framebuffer_ )
   24447       , occlusionQueryEnable( occlusionQueryEnable_ )
   24448       , queryFlags( queryFlags_ )
   24449       , pipelineStatistics( pipelineStatistics_ )
   24450     {
   24451     }
   24452 
   24453     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
   24454     {
   24455       memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
   24456     }
   24457 
   24458     CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
   24459     {
   24460       memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
   24461       return *this;
   24462     }
   24463     CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
   24464     {
   24465       pNext = pNext_;
   24466       return *this;
   24467     }
   24468 
   24469     CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
   24470     {
   24471       renderPass = renderPass_;
   24472       return *this;
   24473     }
   24474 
   24475     CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
   24476     {
   24477       subpass = subpass_;
   24478       return *this;
   24479     }
   24480 
   24481     CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
   24482     {
   24483       framebuffer = framebuffer_;
   24484       return *this;
   24485     }
   24486 
   24487     CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
   24488     {
   24489       occlusionQueryEnable = occlusionQueryEnable_;
   24490       return *this;
   24491     }
   24492 
   24493     CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
   24494     {
   24495       queryFlags = queryFlags_;
   24496       return *this;
   24497     }
   24498 
   24499     CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
   24500     {
   24501       pipelineStatistics = pipelineStatistics_;
   24502       return *this;
   24503     }
   24504 
   24505     operator VkCommandBufferInheritanceInfo const&() const
   24506     {
   24507       return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
   24508     }
   24509 
   24510     operator VkCommandBufferInheritanceInfo &()
   24511     {
   24512       return *reinterpret_cast<VkCommandBufferInheritanceInfo*>(this);
   24513     }
   24514 
   24515     bool operator==( CommandBufferInheritanceInfo const& rhs ) const
   24516     {
   24517       return ( sType == rhs.sType )
   24518           && ( pNext == rhs.pNext )
   24519           && ( renderPass == rhs.renderPass )
   24520           && ( subpass == rhs.subpass )
   24521           && ( framebuffer == rhs.framebuffer )
   24522           && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
   24523           && ( queryFlags == rhs.queryFlags )
   24524           && ( pipelineStatistics == rhs.pipelineStatistics );
   24525     }
   24526 
   24527     bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
   24528     {
   24529       return !operator==( rhs );
   24530     }
   24531 
   24532   private:
   24533     StructureType sType = StructureType::eCommandBufferInheritanceInfo;
   24534 
   24535   public:
   24536     const void* pNext = nullptr;
   24537     RenderPass renderPass;
   24538     uint32_t subpass;
   24539     Framebuffer framebuffer;
   24540     Bool32 occlusionQueryEnable;
   24541     QueryControlFlags queryFlags;
   24542     QueryPipelineStatisticFlags pipelineStatistics;
   24543   };
   24544   static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
   24545 
   24546   struct CommandBufferBeginInfo
   24547   {
   24548     CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(),
   24549                             const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
   24550       : flags( flags_ )
   24551       , pInheritanceInfo( pInheritanceInfo_ )
   24552     {
   24553     }
   24554 
   24555     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
   24556     {
   24557       memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
   24558     }
   24559 
   24560     CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
   24561     {
   24562       memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
   24563       return *this;
   24564     }
   24565     CommandBufferBeginInfo& setPNext( const void* pNext_ )
   24566     {
   24567       pNext = pNext_;
   24568       return *this;
   24569     }
   24570 
   24571     CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
   24572     {
   24573       flags = flags_;
   24574       return *this;
   24575     }
   24576 
   24577     CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
   24578     {
   24579       pInheritanceInfo = pInheritanceInfo_;
   24580       return *this;
   24581     }
   24582 
   24583     operator VkCommandBufferBeginInfo const&() const
   24584     {
   24585       return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
   24586     }
   24587 
   24588     operator VkCommandBufferBeginInfo &()
   24589     {
   24590       return *reinterpret_cast<VkCommandBufferBeginInfo*>(this);
   24591     }
   24592 
   24593     bool operator==( CommandBufferBeginInfo const& rhs ) const
   24594     {
   24595       return ( sType == rhs.sType )
   24596           && ( pNext == rhs.pNext )
   24597           && ( flags == rhs.flags )
   24598           && ( pInheritanceInfo == rhs.pInheritanceInfo );
   24599     }
   24600 
   24601     bool operator!=( CommandBufferBeginInfo const& rhs ) const
   24602     {
   24603       return !operator==( rhs );
   24604     }
   24605 
   24606   private:
   24607     StructureType sType = StructureType::eCommandBufferBeginInfo;
   24608 
   24609   public:
   24610     const void* pNext = nullptr;
   24611     CommandBufferUsageFlags flags;
   24612     const CommandBufferInheritanceInfo* pInheritanceInfo;
   24613   };
   24614   static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
   24615 
   24616   struct QueryPoolCreateInfo
   24617   {
   24618     QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(),
   24619                          QueryType queryType_ = QueryType::eOcclusion,
   24620                          uint32_t queryCount_ = 0,
   24621                          QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
   24622       : flags( flags_ )
   24623       , queryType( queryType_ )
   24624       , queryCount( queryCount_ )
   24625       , pipelineStatistics( pipelineStatistics_ )
   24626     {
   24627     }
   24628 
   24629     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
   24630     {
   24631       memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
   24632     }
   24633 
   24634     QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
   24635     {
   24636       memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
   24637       return *this;
   24638     }
   24639     QueryPoolCreateInfo& setPNext( const void* pNext_ )
   24640     {
   24641       pNext = pNext_;
   24642       return *this;
   24643     }
   24644 
   24645     QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
   24646     {
   24647       flags = flags_;
   24648       return *this;
   24649     }
   24650 
   24651     QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
   24652     {
   24653       queryType = queryType_;
   24654       return *this;
   24655     }
   24656 
   24657     QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
   24658     {
   24659       queryCount = queryCount_;
   24660       return *this;
   24661     }
   24662 
   24663     QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
   24664     {
   24665       pipelineStatistics = pipelineStatistics_;
   24666       return *this;
   24667     }
   24668 
   24669     operator VkQueryPoolCreateInfo const&() const
   24670     {
   24671       return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
   24672     }
   24673 
   24674     operator VkQueryPoolCreateInfo &()
   24675     {
   24676       return *reinterpret_cast<VkQueryPoolCreateInfo*>(this);
   24677     }
   24678 
   24679     bool operator==( QueryPoolCreateInfo const& rhs ) const
   24680     {
   24681       return ( sType == rhs.sType )
   24682           && ( pNext == rhs.pNext )
   24683           && ( flags == rhs.flags )
   24684           && ( queryType == rhs.queryType )
   24685           && ( queryCount == rhs.queryCount )
   24686           && ( pipelineStatistics == rhs.pipelineStatistics );
   24687     }
   24688 
   24689     bool operator!=( QueryPoolCreateInfo const& rhs ) const
   24690     {
   24691       return !operator==( rhs );
   24692     }
   24693 
   24694   private:
   24695     StructureType sType = StructureType::eQueryPoolCreateInfo;
   24696 
   24697   public:
   24698     const void* pNext = nullptr;
   24699     QueryPoolCreateFlags flags;
   24700     QueryType queryType;
   24701     uint32_t queryCount;
   24702     QueryPipelineStatisticFlags pipelineStatistics;
   24703   };
   24704   static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
   24705 
   24706   enum class ImageAspectFlagBits
   24707   {
   24708     eColor = VK_IMAGE_ASPECT_COLOR_BIT,
   24709     eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
   24710     eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
   24711     eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
   24712     ePlane0 = VK_IMAGE_ASPECT_PLANE_0_BIT,
   24713     ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
   24714     ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT,
   24715     ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
   24716     ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT,
   24717     ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
   24718     eMemoryPlane0EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,
   24719     eMemoryPlane1EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,
   24720     eMemoryPlane2EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,
   24721     eMemoryPlane3EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT
   24722   };
   24723 
   24724   using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
   24725 
   24726   VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
   24727   {
   24728     return ImageAspectFlags( bit0 ) | bit1;
   24729   }
   24730 
   24731   VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
   24732   {
   24733     return ~( ImageAspectFlags( bits ) );
   24734   }
   24735 
   24736   template <> struct FlagTraits<ImageAspectFlagBits>
   24737   {
   24738     enum
   24739     {
   24740       allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata) | VkFlags(ImageAspectFlagBits::ePlane0) | VkFlags(ImageAspectFlagBits::ePlane1) | VkFlags(ImageAspectFlagBits::ePlane2) | VkFlags(ImageAspectFlagBits::eMemoryPlane0EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane1EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane2EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane3EXT)
   24741     };
   24742   };
   24743 
   24744   struct ImageSubresource
   24745   {
   24746     ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
   24747                       uint32_t mipLevel_ = 0,
   24748                       uint32_t arrayLayer_ = 0 )
   24749       : aspectMask( aspectMask_ )
   24750       , mipLevel( mipLevel_ )
   24751       , arrayLayer( arrayLayer_ )
   24752     {
   24753     }
   24754 
   24755     ImageSubresource( VkImageSubresource const & rhs )
   24756     {
   24757       memcpy( this, &rhs, sizeof( ImageSubresource ) );
   24758     }
   24759 
   24760     ImageSubresource& operator=( VkImageSubresource const & rhs )
   24761     {
   24762       memcpy( this, &rhs, sizeof( ImageSubresource ) );
   24763       return *this;
   24764     }
   24765     ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
   24766     {
   24767       aspectMask = aspectMask_;
   24768       return *this;
   24769     }
   24770 
   24771     ImageSubresource& setMipLevel( uint32_t mipLevel_ )
   24772     {
   24773       mipLevel = mipLevel_;
   24774       return *this;
   24775     }
   24776 
   24777     ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
   24778     {
   24779       arrayLayer = arrayLayer_;
   24780       return *this;
   24781     }
   24782 
   24783     operator VkImageSubresource const&() const
   24784     {
   24785       return *reinterpret_cast<const VkImageSubresource*>(this);
   24786     }
   24787 
   24788     operator VkImageSubresource &()
   24789     {
   24790       return *reinterpret_cast<VkImageSubresource*>(this);
   24791     }
   24792 
   24793     bool operator==( ImageSubresource const& rhs ) const
   24794     {
   24795       return ( aspectMask == rhs.aspectMask )
   24796           && ( mipLevel == rhs.mipLevel )
   24797           && ( arrayLayer == rhs.arrayLayer );
   24798     }
   24799 
   24800     bool operator!=( ImageSubresource const& rhs ) const
   24801     {
   24802       return !operator==( rhs );
   24803     }
   24804 
   24805     ImageAspectFlags aspectMask;
   24806     uint32_t mipLevel;
   24807     uint32_t arrayLayer;
   24808   };
   24809   static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
   24810 
   24811   struct ImageSubresourceLayers
   24812   {
   24813     ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
   24814                             uint32_t mipLevel_ = 0,
   24815                             uint32_t baseArrayLayer_ = 0,
   24816                             uint32_t layerCount_ = 0 )
   24817       : aspectMask( aspectMask_ )
   24818       , mipLevel( mipLevel_ )
   24819       , baseArrayLayer( baseArrayLayer_ )
   24820       , layerCount( layerCount_ )
   24821     {
   24822     }
   24823 
   24824     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
   24825     {
   24826       memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
   24827     }
   24828 
   24829     ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
   24830     {
   24831       memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
   24832       return *this;
   24833     }
   24834     ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
   24835     {
   24836       aspectMask = aspectMask_;
   24837       return *this;
   24838     }
   24839 
   24840     ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
   24841     {
   24842       mipLevel = mipLevel_;
   24843       return *this;
   24844     }
   24845 
   24846     ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
   24847     {
   24848       baseArrayLayer = baseArrayLayer_;
   24849       return *this;
   24850     }
   24851 
   24852     ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
   24853     {
   24854       layerCount = layerCount_;
   24855       return *this;
   24856     }
   24857 
   24858     operator VkImageSubresourceLayers const&() const
   24859     {
   24860       return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
   24861     }
   24862 
   24863     operator VkImageSubresourceLayers &()
   24864     {
   24865       return *reinterpret_cast<VkImageSubresourceLayers*>(this);
   24866     }
   24867 
   24868     bool operator==( ImageSubresourceLayers const& rhs ) const
   24869     {
   24870       return ( aspectMask == rhs.aspectMask )
   24871           && ( mipLevel == rhs.mipLevel )
   24872           && ( baseArrayLayer == rhs.baseArrayLayer )
   24873           && ( layerCount == rhs.layerCount );
   24874     }
   24875 
   24876     bool operator!=( ImageSubresourceLayers const& rhs ) const
   24877     {
   24878       return !operator==( rhs );
   24879     }
   24880 
   24881     ImageAspectFlags aspectMask;
   24882     uint32_t mipLevel;
   24883     uint32_t baseArrayLayer;
   24884     uint32_t layerCount;
   24885   };
   24886   static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
   24887 
   24888   struct ImageSubresourceRange
   24889   {
   24890     ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
   24891                            uint32_t baseMipLevel_ = 0,
   24892                            uint32_t levelCount_ = 0,
   24893                            uint32_t baseArrayLayer_ = 0,
   24894                            uint32_t layerCount_ = 0 )
   24895       : aspectMask( aspectMask_ )
   24896       , baseMipLevel( baseMipLevel_ )
   24897       , levelCount( levelCount_ )
   24898       , baseArrayLayer( baseArrayLayer_ )
   24899       , layerCount( layerCount_ )
   24900     {
   24901     }
   24902 
   24903     ImageSubresourceRange( VkImageSubresourceRange const & rhs )
   24904     {
   24905       memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
   24906     }
   24907 
   24908     ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
   24909     {
   24910       memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
   24911       return *this;
   24912     }
   24913     ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
   24914     {
   24915       aspectMask = aspectMask_;
   24916       return *this;
   24917     }
   24918 
   24919     ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
   24920     {
   24921       baseMipLevel = baseMipLevel_;
   24922       return *this;
   24923     }
   24924 
   24925     ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
   24926     {
   24927       levelCount = levelCount_;
   24928       return *this;
   24929     }
   24930 
   24931     ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
   24932     {
   24933       baseArrayLayer = baseArrayLayer_;
   24934       return *this;
   24935     }
   24936 
   24937     ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
   24938     {
   24939       layerCount = layerCount_;
   24940       return *this;
   24941     }
   24942 
   24943     operator VkImageSubresourceRange const&() const
   24944     {
   24945       return *reinterpret_cast<const VkImageSubresourceRange*>(this);
   24946     }
   24947 
   24948     operator VkImageSubresourceRange &()
   24949     {
   24950       return *reinterpret_cast<VkImageSubresourceRange*>(this);
   24951     }
   24952 
   24953     bool operator==( ImageSubresourceRange const& rhs ) const
   24954     {
   24955       return ( aspectMask == rhs.aspectMask )
   24956           && ( baseMipLevel == rhs.baseMipLevel )
   24957           && ( levelCount == rhs.levelCount )
   24958           && ( baseArrayLayer == rhs.baseArrayLayer )
   24959           && ( layerCount == rhs.layerCount );
   24960     }
   24961 
   24962     bool operator!=( ImageSubresourceRange const& rhs ) const
   24963     {
   24964       return !operator==( rhs );
   24965     }
   24966 
   24967     ImageAspectFlags aspectMask;
   24968     uint32_t baseMipLevel;
   24969     uint32_t levelCount;
   24970     uint32_t baseArrayLayer;
   24971     uint32_t layerCount;
   24972   };
   24973   static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
   24974 
   24975   struct ImageMemoryBarrier
   24976   {
   24977     ImageMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
   24978                         AccessFlags dstAccessMask_ = AccessFlags(),
   24979                         ImageLayout oldLayout_ = ImageLayout::eUndefined,
   24980                         ImageLayout newLayout_ = ImageLayout::eUndefined,
   24981                         uint32_t srcQueueFamilyIndex_ = 0,
   24982                         uint32_t dstQueueFamilyIndex_ = 0,
   24983                         Image image_ = Image(),
   24984                         ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
   24985       : srcAccessMask( srcAccessMask_ )
   24986       , dstAccessMask( dstAccessMask_ )
   24987       , oldLayout( oldLayout_ )
   24988       , newLayout( newLayout_ )
   24989       , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
   24990       , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
   24991       , image( image_ )
   24992       , subresourceRange( subresourceRange_ )
   24993     {
   24994     }
   24995 
   24996     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
   24997     {
   24998       memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
   24999     }
   25000 
   25001     ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
   25002     {
   25003       memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
   25004       return *this;
   25005     }
   25006     ImageMemoryBarrier& setPNext( const void* pNext_ )
   25007     {
   25008       pNext = pNext_;
   25009       return *this;
   25010     }
   25011 
   25012     ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
   25013     {
   25014       srcAccessMask = srcAccessMask_;
   25015       return *this;
   25016     }
   25017 
   25018     ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
   25019     {
   25020       dstAccessMask = dstAccessMask_;
   25021       return *this;
   25022     }
   25023 
   25024     ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
   25025     {
   25026       oldLayout = oldLayout_;
   25027       return *this;
   25028     }
   25029 
   25030     ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
   25031     {
   25032       newLayout = newLayout_;
   25033       return *this;
   25034     }
   25035 
   25036     ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
   25037     {
   25038       srcQueueFamilyIndex = srcQueueFamilyIndex_;
   25039       return *this;
   25040     }
   25041 
   25042     ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
   25043     {
   25044       dstQueueFamilyIndex = dstQueueFamilyIndex_;
   25045       return *this;
   25046     }
   25047 
   25048     ImageMemoryBarrier& setImage( Image image_ )
   25049     {
   25050       image = image_;
   25051       return *this;
   25052     }
   25053 
   25054     ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
   25055     {
   25056       subresourceRange = subresourceRange_;
   25057       return *this;
   25058     }
   25059 
   25060     operator VkImageMemoryBarrier const&() const
   25061     {
   25062       return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
   25063     }
   25064 
   25065     operator VkImageMemoryBarrier &()
   25066     {
   25067       return *reinterpret_cast<VkImageMemoryBarrier*>(this);
   25068     }
   25069 
   25070     bool operator==( ImageMemoryBarrier const& rhs ) const
   25071     {
   25072       return ( sType == rhs.sType )
   25073           && ( pNext == rhs.pNext )
   25074           && ( srcAccessMask == rhs.srcAccessMask )
   25075           && ( dstAccessMask == rhs.dstAccessMask )
   25076           && ( oldLayout == rhs.oldLayout )
   25077           && ( newLayout == rhs.newLayout )
   25078           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
   25079           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
   25080           && ( image == rhs.image )
   25081           && ( subresourceRange == rhs.subresourceRange );
   25082     }
   25083 
   25084     bool operator!=( ImageMemoryBarrier const& rhs ) const
   25085     {
   25086       return !operator==( rhs );
   25087     }
   25088 
   25089   private:
   25090     StructureType sType = StructureType::eImageMemoryBarrier;
   25091 
   25092   public:
   25093     const void* pNext = nullptr;
   25094     AccessFlags srcAccessMask;
   25095     AccessFlags dstAccessMask;
   25096     ImageLayout oldLayout;
   25097     ImageLayout newLayout;
   25098     uint32_t srcQueueFamilyIndex;
   25099     uint32_t dstQueueFamilyIndex;
   25100     Image image;
   25101     ImageSubresourceRange subresourceRange;
   25102   };
   25103   static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
   25104 
   25105   struct ImageViewCreateInfo
   25106   {
   25107     ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(),
   25108                          Image image_ = Image(),
   25109                          ImageViewType viewType_ = ImageViewType::e1D,
   25110                          Format format_ = Format::eUndefined,
   25111                          ComponentMapping components_ = ComponentMapping(),
   25112                          ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
   25113       : flags( flags_ )
   25114       , image( image_ )
   25115       , viewType( viewType_ )
   25116       , format( format_ )
   25117       , components( components_ )
   25118       , subresourceRange( subresourceRange_ )
   25119     {
   25120     }
   25121 
   25122     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
   25123     {
   25124       memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
   25125     }
   25126 
   25127     ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
   25128     {
   25129       memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
   25130       return *this;
   25131     }
   25132     ImageViewCreateInfo& setPNext( const void* pNext_ )
   25133     {
   25134       pNext = pNext_;
   25135       return *this;
   25136     }
   25137 
   25138     ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
   25139     {
   25140       flags = flags_;
   25141       return *this;
   25142     }
   25143 
   25144     ImageViewCreateInfo& setImage( Image image_ )
   25145     {
   25146       image = image_;
   25147       return *this;
   25148     }
   25149 
   25150     ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
   25151     {
   25152       viewType = viewType_;
   25153       return *this;
   25154     }
   25155 
   25156     ImageViewCreateInfo& setFormat( Format format_ )
   25157     {
   25158       format = format_;
   25159       return *this;
   25160     }
   25161 
   25162     ImageViewCreateInfo& setComponents( ComponentMapping components_ )
   25163     {
   25164       components = components_;
   25165       return *this;
   25166     }
   25167 
   25168     ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
   25169     {
   25170       subresourceRange = subresourceRange_;
   25171       return *this;
   25172     }
   25173 
   25174     operator VkImageViewCreateInfo const&() const
   25175     {
   25176       return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
   25177     }
   25178 
   25179     operator VkImageViewCreateInfo &()
   25180     {
   25181       return *reinterpret_cast<VkImageViewCreateInfo*>(this);
   25182     }
   25183 
   25184     bool operator==( ImageViewCreateInfo const& rhs ) const
   25185     {
   25186       return ( sType == rhs.sType )
   25187           && ( pNext == rhs.pNext )
   25188           && ( flags == rhs.flags )
   25189           && ( image == rhs.image )
   25190           && ( viewType == rhs.viewType )
   25191           && ( format == rhs.format )
   25192           && ( components == rhs.components )
   25193           && ( subresourceRange == rhs.subresourceRange );
   25194     }
   25195 
   25196     bool operator!=( ImageViewCreateInfo const& rhs ) const
   25197     {
   25198       return !operator==( rhs );
   25199     }
   25200 
   25201   private:
   25202     StructureType sType = StructureType::eImageViewCreateInfo;
   25203 
   25204   public:
   25205     const void* pNext = nullptr;
   25206     ImageViewCreateFlags flags;
   25207     Image image;
   25208     ImageViewType viewType;
   25209     Format format;
   25210     ComponentMapping components;
   25211     ImageSubresourceRange subresourceRange;
   25212   };
   25213   static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
   25214 
   25215   struct ImageCopy
   25216   {
   25217     ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
   25218                Offset3D srcOffset_ = Offset3D(),
   25219                ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
   25220                Offset3D dstOffset_ = Offset3D(),
   25221                Extent3D extent_ = Extent3D() )
   25222       : srcSubresource( srcSubresource_ )
   25223       , srcOffset( srcOffset_ )
   25224       , dstSubresource( dstSubresource_ )
   25225       , dstOffset( dstOffset_ )
   25226       , extent( extent_ )
   25227     {
   25228     }
   25229 
   25230     ImageCopy( VkImageCopy const & rhs )
   25231     {
   25232       memcpy( this, &rhs, sizeof( ImageCopy ) );
   25233     }
   25234 
   25235     ImageCopy& operator=( VkImageCopy const & rhs )
   25236     {
   25237       memcpy( this, &rhs, sizeof( ImageCopy ) );
   25238       return *this;
   25239     }
   25240     ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
   25241     {
   25242       srcSubresource = srcSubresource_;
   25243       return *this;
   25244     }
   25245 
   25246     ImageCopy& setSrcOffset( Offset3D srcOffset_ )
   25247     {
   25248       srcOffset = srcOffset_;
   25249       return *this;
   25250     }
   25251 
   25252     ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
   25253     {
   25254       dstSubresource = dstSubresource_;
   25255       return *this;
   25256     }
   25257 
   25258     ImageCopy& setDstOffset( Offset3D dstOffset_ )
   25259     {
   25260       dstOffset = dstOffset_;
   25261       return *this;
   25262     }
   25263 
   25264     ImageCopy& setExtent( Extent3D extent_ )
   25265     {
   25266       extent = extent_;
   25267       return *this;
   25268     }
   25269 
   25270     operator VkImageCopy const&() const
   25271     {
   25272       return *reinterpret_cast<const VkImageCopy*>(this);
   25273     }
   25274 
   25275     operator VkImageCopy &()
   25276     {
   25277       return *reinterpret_cast<VkImageCopy*>(this);
   25278     }
   25279 
   25280     bool operator==( ImageCopy const& rhs ) const
   25281     {
   25282       return ( srcSubresource == rhs.srcSubresource )
   25283           && ( srcOffset == rhs.srcOffset )
   25284           && ( dstSubresource == rhs.dstSubresource )
   25285           && ( dstOffset == rhs.dstOffset )
   25286           && ( extent == rhs.extent );
   25287     }
   25288 
   25289     bool operator!=( ImageCopy const& rhs ) const
   25290     {
   25291       return !operator==( rhs );
   25292     }
   25293 
   25294     ImageSubresourceLayers srcSubresource;
   25295     Offset3D srcOffset;
   25296     ImageSubresourceLayers dstSubresource;
   25297     Offset3D dstOffset;
   25298     Extent3D extent;
   25299   };
   25300   static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
   25301 
   25302   struct ImageBlit
   25303   {
   25304     ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
   25305                std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } },
   25306                ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
   25307                std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
   25308       : srcSubresource( srcSubresource_ )
   25309       , dstSubresource( dstSubresource_ )
   25310     {
   25311       memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
   25312       memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
   25313     }
   25314 
   25315     ImageBlit( VkImageBlit const & rhs )
   25316     {
   25317       memcpy( this, &rhs, sizeof( ImageBlit ) );
   25318     }
   25319 
   25320     ImageBlit& operator=( VkImageBlit const & rhs )
   25321     {
   25322       memcpy( this, &rhs, sizeof( ImageBlit ) );
   25323       return *this;
   25324     }
   25325     ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
   25326     {
   25327       srcSubresource = srcSubresource_;
   25328       return *this;
   25329     }
   25330 
   25331     ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
   25332     {
   25333       memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
   25334       return *this;
   25335     }
   25336 
   25337     ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
   25338     {
   25339       dstSubresource = dstSubresource_;
   25340       return *this;
   25341     }
   25342 
   25343     ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
   25344     {
   25345       memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
   25346       return *this;
   25347     }
   25348 
   25349     operator VkImageBlit const&() const
   25350     {
   25351       return *reinterpret_cast<const VkImageBlit*>(this);
   25352     }
   25353 
   25354     operator VkImageBlit &()
   25355     {
   25356       return *reinterpret_cast<VkImageBlit*>(this);
   25357     }
   25358 
   25359     bool operator==( ImageBlit const& rhs ) const
   25360     {
   25361       return ( srcSubresource == rhs.srcSubresource )
   25362           && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
   25363           && ( dstSubresource == rhs.dstSubresource )
   25364           && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
   25365     }
   25366 
   25367     bool operator!=( ImageBlit const& rhs ) const
   25368     {
   25369       return !operator==( rhs );
   25370     }
   25371 
   25372     ImageSubresourceLayers srcSubresource;
   25373     Offset3D srcOffsets[2];
   25374     ImageSubresourceLayers dstSubresource;
   25375     Offset3D dstOffsets[2];
   25376   };
   25377   static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
   25378 
   25379   struct BufferImageCopy
   25380   {
   25381     BufferImageCopy( DeviceSize bufferOffset_ = 0,
   25382                      uint32_t bufferRowLength_ = 0,
   25383                      uint32_t bufferImageHeight_ = 0,
   25384                      ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(),
   25385                      Offset3D imageOffset_ = Offset3D(),
   25386                      Extent3D imageExtent_ = Extent3D() )
   25387       : bufferOffset( bufferOffset_ )
   25388       , bufferRowLength( bufferRowLength_ )
   25389       , bufferImageHeight( bufferImageHeight_ )
   25390       , imageSubresource( imageSubresource_ )
   25391       , imageOffset( imageOffset_ )
   25392       , imageExtent( imageExtent_ )
   25393     {
   25394     }
   25395 
   25396     BufferImageCopy( VkBufferImageCopy const & rhs )
   25397     {
   25398       memcpy( this, &rhs, sizeof( BufferImageCopy ) );
   25399     }
   25400 
   25401     BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
   25402     {
   25403       memcpy( this, &rhs, sizeof( BufferImageCopy ) );
   25404       return *this;
   25405     }
   25406     BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
   25407     {
   25408       bufferOffset = bufferOffset_;
   25409       return *this;
   25410     }
   25411 
   25412     BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
   25413     {
   25414       bufferRowLength = bufferRowLength_;
   25415       return *this;
   25416     }
   25417 
   25418     BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
   25419     {
   25420       bufferImageHeight = bufferImageHeight_;
   25421       return *this;
   25422     }
   25423 
   25424     BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
   25425     {
   25426       imageSubresource = imageSubresource_;
   25427       return *this;
   25428     }
   25429 
   25430     BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
   25431     {
   25432       imageOffset = imageOffset_;
   25433       return *this;
   25434     }
   25435 
   25436     BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
   25437     {
   25438       imageExtent = imageExtent_;
   25439       return *this;
   25440     }
   25441 
   25442     operator VkBufferImageCopy const&() const
   25443     {
   25444       return *reinterpret_cast<const VkBufferImageCopy*>(this);
   25445     }
   25446 
   25447     operator VkBufferImageCopy &()
   25448     {
   25449       return *reinterpret_cast<VkBufferImageCopy*>(this);
   25450     }
   25451 
   25452     bool operator==( BufferImageCopy const& rhs ) const
   25453     {
   25454       return ( bufferOffset == rhs.bufferOffset )
   25455           && ( bufferRowLength == rhs.bufferRowLength )
   25456           && ( bufferImageHeight == rhs.bufferImageHeight )
   25457           && ( imageSubresource == rhs.imageSubresource )
   25458           && ( imageOffset == rhs.imageOffset )
   25459           && ( imageExtent == rhs.imageExtent );
   25460     }
   25461 
   25462     bool operator!=( BufferImageCopy const& rhs ) const
   25463     {
   25464       return !operator==( rhs );
   25465     }
   25466 
   25467     DeviceSize bufferOffset;
   25468     uint32_t bufferRowLength;
   25469     uint32_t bufferImageHeight;
   25470     ImageSubresourceLayers imageSubresource;
   25471     Offset3D imageOffset;
   25472     Extent3D imageExtent;
   25473   };
   25474   static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
   25475 
   25476   struct ImageResolve
   25477   {
   25478     ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
   25479                   Offset3D srcOffset_ = Offset3D(),
   25480                   ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
   25481                   Offset3D dstOffset_ = Offset3D(),
   25482                   Extent3D extent_ = Extent3D() )
   25483       : srcSubresource( srcSubresource_ )
   25484       , srcOffset( srcOffset_ )
   25485       , dstSubresource( dstSubresource_ )
   25486       , dstOffset( dstOffset_ )
   25487       , extent( extent_ )
   25488     {
   25489     }
   25490 
   25491     ImageResolve( VkImageResolve const & rhs )
   25492     {
   25493       memcpy( this, &rhs, sizeof( ImageResolve ) );
   25494     }
   25495 
   25496     ImageResolve& operator=( VkImageResolve const & rhs )
   25497     {
   25498       memcpy( this, &rhs, sizeof( ImageResolve ) );
   25499       return *this;
   25500     }
   25501     ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
   25502     {
   25503       srcSubresource = srcSubresource_;
   25504       return *this;
   25505     }
   25506 
   25507     ImageResolve& setSrcOffset( Offset3D srcOffset_ )
   25508     {
   25509       srcOffset = srcOffset_;
   25510       return *this;
   25511     }
   25512 
   25513     ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
   25514     {
   25515       dstSubresource = dstSubresource_;
   25516       return *this;
   25517     }
   25518 
   25519     ImageResolve& setDstOffset( Offset3D dstOffset_ )
   25520     {
   25521       dstOffset = dstOffset_;
   25522       return *this;
   25523     }
   25524 
   25525     ImageResolve& setExtent( Extent3D extent_ )
   25526     {
   25527       extent = extent_;
   25528       return *this;
   25529     }
   25530 
   25531     operator VkImageResolve const&() const
   25532     {
   25533       return *reinterpret_cast<const VkImageResolve*>(this);
   25534     }
   25535 
   25536     operator VkImageResolve &()
   25537     {
   25538       return *reinterpret_cast<VkImageResolve*>(this);
   25539     }
   25540 
   25541     bool operator==( ImageResolve const& rhs ) const
   25542     {
   25543       return ( srcSubresource == rhs.srcSubresource )
   25544           && ( srcOffset == rhs.srcOffset )
   25545           && ( dstSubresource == rhs.dstSubresource )
   25546           && ( dstOffset == rhs.dstOffset )
   25547           && ( extent == rhs.extent );
   25548     }
   25549 
   25550     bool operator!=( ImageResolve const& rhs ) const
   25551     {
   25552       return !operator==( rhs );
   25553     }
   25554 
   25555     ImageSubresourceLayers srcSubresource;
   25556     Offset3D srcOffset;
   25557     ImageSubresourceLayers dstSubresource;
   25558     Offset3D dstOffset;
   25559     Extent3D extent;
   25560   };
   25561   static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
   25562 
   25563   struct ClearAttachment
   25564   {
   25565     ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
   25566                      uint32_t colorAttachment_ = 0,
   25567                      ClearValue clearValue_ = ClearValue() )
   25568       : aspectMask( aspectMask_ )
   25569       , colorAttachment( colorAttachment_ )
   25570       , clearValue( clearValue_ )
   25571     {
   25572     }
   25573 
   25574     ClearAttachment( VkClearAttachment const & rhs )
   25575     {
   25576       memcpy( this, &rhs, sizeof( ClearAttachment ) );
   25577     }
   25578 
   25579     ClearAttachment& operator=( VkClearAttachment const & rhs )
   25580     {
   25581       memcpy( this, &rhs, sizeof( ClearAttachment ) );
   25582       return *this;
   25583     }
   25584     ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
   25585     {
   25586       aspectMask = aspectMask_;
   25587       return *this;
   25588     }
   25589 
   25590     ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
   25591     {
   25592       colorAttachment = colorAttachment_;
   25593       return *this;
   25594     }
   25595 
   25596     ClearAttachment& setClearValue( ClearValue clearValue_ )
   25597     {
   25598       clearValue = clearValue_;
   25599       return *this;
   25600     }
   25601 
   25602     operator VkClearAttachment const&() const
   25603     {
   25604       return *reinterpret_cast<const VkClearAttachment*>(this);
   25605     }
   25606 
   25607     operator VkClearAttachment &()
   25608     {
   25609       return *reinterpret_cast<VkClearAttachment*>(this);
   25610     }
   25611 
   25612     ImageAspectFlags aspectMask;
   25613     uint32_t colorAttachment;
   25614     ClearValue clearValue;
   25615   };
   25616   static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
   25617 
   25618   struct InputAttachmentAspectReference
   25619   {
   25620     InputAttachmentAspectReference( uint32_t subpass_ = 0,
   25621                                     uint32_t inputAttachmentIndex_ = 0,
   25622                                     ImageAspectFlags aspectMask_ = ImageAspectFlags() )
   25623       : subpass( subpass_ )
   25624       , inputAttachmentIndex( inputAttachmentIndex_ )
   25625       , aspectMask( aspectMask_ )
   25626     {
   25627     }
   25628 
   25629     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs )
   25630     {
   25631       memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
   25632     }
   25633 
   25634     InputAttachmentAspectReference& operator=( VkInputAttachmentAspectReference const & rhs )
   25635     {
   25636       memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
   25637       return *this;
   25638     }
   25639     InputAttachmentAspectReference& setSubpass( uint32_t subpass_ )
   25640     {
   25641       subpass = subpass_;
   25642       return *this;
   25643     }
   25644 
   25645     InputAttachmentAspectReference& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
   25646     {
   25647       inputAttachmentIndex = inputAttachmentIndex_;
   25648       return *this;
   25649     }
   25650 
   25651     InputAttachmentAspectReference& setAspectMask( ImageAspectFlags aspectMask_ )
   25652     {
   25653       aspectMask = aspectMask_;
   25654       return *this;
   25655     }
   25656 
   25657     operator VkInputAttachmentAspectReference const&() const
   25658     {
   25659       return *reinterpret_cast<const VkInputAttachmentAspectReference*>(this);
   25660     }
   25661 
   25662     operator VkInputAttachmentAspectReference &()
   25663     {
   25664       return *reinterpret_cast<VkInputAttachmentAspectReference*>(this);
   25665     }
   25666 
   25667     bool operator==( InputAttachmentAspectReference const& rhs ) const
   25668     {
   25669       return ( subpass == rhs.subpass )
   25670           && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
   25671           && ( aspectMask == rhs.aspectMask );
   25672     }
   25673 
   25674     bool operator!=( InputAttachmentAspectReference const& rhs ) const
   25675     {
   25676       return !operator==( rhs );
   25677     }
   25678 
   25679     uint32_t subpass;
   25680     uint32_t inputAttachmentIndex;
   25681     ImageAspectFlags aspectMask;
   25682   };
   25683   static_assert( sizeof( InputAttachmentAspectReference ) == sizeof( VkInputAttachmentAspectReference ), "struct and wrapper have different size!" );
   25684 
   25685   using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
   25686 
   25687   struct RenderPassInputAttachmentAspectCreateInfo
   25688   {
   25689     RenderPassInputAttachmentAspectCreateInfo( uint32_t aspectReferenceCount_ = 0,
   25690                                                const InputAttachmentAspectReference* pAspectReferences_ = nullptr )
   25691       : aspectReferenceCount( aspectReferenceCount_ )
   25692       , pAspectReferences( pAspectReferences_ )
   25693     {
   25694     }
   25695 
   25696     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
   25697     {
   25698       memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
   25699     }
   25700 
   25701     RenderPassInputAttachmentAspectCreateInfo& operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
   25702     {
   25703       memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
   25704       return *this;
   25705     }
   25706     RenderPassInputAttachmentAspectCreateInfo& setPNext( const void* pNext_ )
   25707     {
   25708       pNext = pNext_;
   25709       return *this;
   25710     }
   25711 
   25712     RenderPassInputAttachmentAspectCreateInfo& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
   25713     {
   25714       aspectReferenceCount = aspectReferenceCount_;
   25715       return *this;
   25716     }
   25717 
   25718     RenderPassInputAttachmentAspectCreateInfo& setPAspectReferences( const InputAttachmentAspectReference* pAspectReferences_ )
   25719     {
   25720       pAspectReferences = pAspectReferences_;
   25721       return *this;
   25722     }
   25723 
   25724     operator VkRenderPassInputAttachmentAspectCreateInfo const&() const
   25725     {
   25726       return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(this);
   25727     }
   25728 
   25729     operator VkRenderPassInputAttachmentAspectCreateInfo &()
   25730     {
   25731       return *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(this);
   25732     }
   25733 
   25734     bool operator==( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const
   25735     {
   25736       return ( sType == rhs.sType )
   25737           && ( pNext == rhs.pNext )
   25738           && ( aspectReferenceCount == rhs.aspectReferenceCount )
   25739           && ( pAspectReferences == rhs.pAspectReferences );
   25740     }
   25741 
   25742     bool operator!=( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const
   25743     {
   25744       return !operator==( rhs );
   25745     }
   25746 
   25747   private:
   25748     StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
   25749 
   25750   public:
   25751     const void* pNext = nullptr;
   25752     uint32_t aspectReferenceCount;
   25753     const InputAttachmentAspectReference* pAspectReferences;
   25754   };
   25755   static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), "struct and wrapper have different size!" );
   25756 
   25757   using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
   25758 
   25759   struct BindImagePlaneMemoryInfo
   25760   {
   25761     BindImagePlaneMemoryInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
   25762       : planeAspect( planeAspect_ )
   25763     {
   25764     }
   25765 
   25766     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs )
   25767     {
   25768       memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
   25769     }
   25770 
   25771     BindImagePlaneMemoryInfo& operator=( VkBindImagePlaneMemoryInfo const & rhs )
   25772     {
   25773       memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
   25774       return *this;
   25775     }
   25776     BindImagePlaneMemoryInfo& setPNext( const void* pNext_ )
   25777     {
   25778       pNext = pNext_;
   25779       return *this;
   25780     }
   25781 
   25782     BindImagePlaneMemoryInfo& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
   25783     {
   25784       planeAspect = planeAspect_;
   25785       return *this;
   25786     }
   25787 
   25788     operator VkBindImagePlaneMemoryInfo const&() const
   25789     {
   25790       return *reinterpret_cast<const VkBindImagePlaneMemoryInfo*>(this);
   25791     }
   25792 
   25793     operator VkBindImagePlaneMemoryInfo &()
   25794     {
   25795       return *reinterpret_cast<VkBindImagePlaneMemoryInfo*>(this);
   25796     }
   25797 
   25798     bool operator==( BindImagePlaneMemoryInfo const& rhs ) const
   25799     {
   25800       return ( sType == rhs.sType )
   25801           && ( pNext == rhs.pNext )
   25802           && ( planeAspect == rhs.planeAspect );
   25803     }
   25804 
   25805     bool operator!=( BindImagePlaneMemoryInfo const& rhs ) const
   25806     {
   25807       return !operator==( rhs );
   25808     }
   25809 
   25810   private:
   25811     StructureType sType = StructureType::eBindImagePlaneMemoryInfo;
   25812 
   25813   public:
   25814     const void* pNext = nullptr;
   25815     ImageAspectFlagBits planeAspect;
   25816   };
   25817   static_assert( sizeof( BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), "struct and wrapper have different size!" );
   25818 
   25819   using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
   25820 
   25821   struct ImagePlaneMemoryRequirementsInfo
   25822   {
   25823     ImagePlaneMemoryRequirementsInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
   25824       : planeAspect( planeAspect_ )
   25825     {
   25826     }
   25827 
   25828     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs )
   25829     {
   25830       memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
   25831     }
   25832 
   25833     ImagePlaneMemoryRequirementsInfo& operator=( VkImagePlaneMemoryRequirementsInfo const & rhs )
   25834     {
   25835       memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
   25836       return *this;
   25837     }
   25838     ImagePlaneMemoryRequirementsInfo& setPNext( const void* pNext_ )
   25839     {
   25840       pNext = pNext_;
   25841       return *this;
   25842     }
   25843 
   25844     ImagePlaneMemoryRequirementsInfo& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
   25845     {
   25846       planeAspect = planeAspect_;
   25847       return *this;
   25848     }
   25849 
   25850     operator VkImagePlaneMemoryRequirementsInfo const&() const
   25851     {
   25852       return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>(this);
   25853     }
   25854 
   25855     operator VkImagePlaneMemoryRequirementsInfo &()
   25856     {
   25857       return *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(this);
   25858     }
   25859 
   25860     bool operator==( ImagePlaneMemoryRequirementsInfo const& rhs ) const
   25861     {
   25862       return ( sType == rhs.sType )
   25863           && ( pNext == rhs.pNext )
   25864           && ( planeAspect == rhs.planeAspect );
   25865     }
   25866 
   25867     bool operator!=( ImagePlaneMemoryRequirementsInfo const& rhs ) const
   25868     {
   25869       return !operator==( rhs );
   25870     }
   25871 
   25872   private:
   25873     StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo;
   25874 
   25875   public:
   25876     const void* pNext = nullptr;
   25877     ImageAspectFlagBits planeAspect;
   25878   };
   25879   static_assert( sizeof( ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), "struct and wrapper have different size!" );
   25880 
   25881   using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
   25882 
   25883   struct AttachmentReference2KHR
   25884   {
   25885     AttachmentReference2KHR( uint32_t attachment_ = 0,
   25886                              ImageLayout layout_ = ImageLayout::eUndefined,
   25887                              ImageAspectFlags aspectMask_ = ImageAspectFlags() )
   25888       : attachment( attachment_ )
   25889       , layout( layout_ )
   25890       , aspectMask( aspectMask_ )
   25891     {
   25892     }
   25893 
   25894     AttachmentReference2KHR( VkAttachmentReference2KHR const & rhs )
   25895     {
   25896       memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
   25897     }
   25898 
   25899     AttachmentReference2KHR& operator=( VkAttachmentReference2KHR const & rhs )
   25900     {
   25901       memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
   25902       return *this;
   25903     }
   25904     AttachmentReference2KHR& setPNext( const void* pNext_ )
   25905     {
   25906       pNext = pNext_;
   25907       return *this;
   25908     }
   25909 
   25910     AttachmentReference2KHR& setAttachment( uint32_t attachment_ )
   25911     {
   25912       attachment = attachment_;
   25913       return *this;
   25914     }
   25915 
   25916     AttachmentReference2KHR& setLayout( ImageLayout layout_ )
   25917     {
   25918       layout = layout_;
   25919       return *this;
   25920     }
   25921 
   25922     AttachmentReference2KHR& setAspectMask( ImageAspectFlags aspectMask_ )
   25923     {
   25924       aspectMask = aspectMask_;
   25925       return *this;
   25926     }
   25927 
   25928     operator VkAttachmentReference2KHR const&() const
   25929     {
   25930       return *reinterpret_cast<const VkAttachmentReference2KHR*>(this);
   25931     }
   25932 
   25933     operator VkAttachmentReference2KHR &()
   25934     {
   25935       return *reinterpret_cast<VkAttachmentReference2KHR*>(this);
   25936     }
   25937 
   25938     bool operator==( AttachmentReference2KHR const& rhs ) const
   25939     {
   25940       return ( sType == rhs.sType )
   25941           && ( pNext == rhs.pNext )
   25942           && ( attachment == rhs.attachment )
   25943           && ( layout == rhs.layout )
   25944           && ( aspectMask == rhs.aspectMask );
   25945     }
   25946 
   25947     bool operator!=( AttachmentReference2KHR const& rhs ) const
   25948     {
   25949       return !operator==( rhs );
   25950     }
   25951 
   25952   private:
   25953     StructureType sType = StructureType::eAttachmentReference2KHR;
   25954 
   25955   public:
   25956     const void* pNext = nullptr;
   25957     uint32_t attachment;
   25958     ImageLayout layout;
   25959     ImageAspectFlags aspectMask;
   25960   };
   25961   static_assert( sizeof( AttachmentReference2KHR ) == sizeof( VkAttachmentReference2KHR ), "struct and wrapper have different size!" );
   25962 
   25963   enum class SparseImageFormatFlagBits
   25964   {
   25965     eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
   25966     eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
   25967     eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
   25968   };
   25969 
   25970   using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
   25971 
   25972   VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
   25973   {
   25974     return SparseImageFormatFlags( bit0 ) | bit1;
   25975   }
   25976 
   25977   VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
   25978   {
   25979     return ~( SparseImageFormatFlags( bits ) );
   25980   }
   25981 
   25982   template <> struct FlagTraits<SparseImageFormatFlagBits>
   25983   {
   25984     enum
   25985     {
   25986       allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
   25987     };
   25988   };
   25989 
   25990   struct SparseImageFormatProperties
   25991   {
   25992     operator VkSparseImageFormatProperties const&() const
   25993     {
   25994       return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
   25995     }
   25996 
   25997     operator VkSparseImageFormatProperties &()
   25998     {
   25999       return *reinterpret_cast<VkSparseImageFormatProperties*>(this);
   26000     }
   26001 
   26002     bool operator==( SparseImageFormatProperties const& rhs ) const
   26003     {
   26004       return ( aspectMask == rhs.aspectMask )
   26005           && ( imageGranularity == rhs.imageGranularity )
   26006           && ( flags == rhs.flags );
   26007     }
   26008 
   26009     bool operator!=( SparseImageFormatProperties const& rhs ) const
   26010     {
   26011       return !operator==( rhs );
   26012     }
   26013 
   26014     ImageAspectFlags aspectMask;
   26015     Extent3D imageGranularity;
   26016     SparseImageFormatFlags flags;
   26017   };
   26018   static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
   26019 
   26020   struct SparseImageMemoryRequirements
   26021   {
   26022     operator VkSparseImageMemoryRequirements const&() const
   26023     {
   26024       return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
   26025     }
   26026 
   26027     operator VkSparseImageMemoryRequirements &()
   26028     {
   26029       return *reinterpret_cast<VkSparseImageMemoryRequirements*>(this);
   26030     }
   26031 
   26032     bool operator==( SparseImageMemoryRequirements const& rhs ) const
   26033     {
   26034       return ( formatProperties == rhs.formatProperties )
   26035           && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
   26036           && ( imageMipTailSize == rhs.imageMipTailSize )
   26037           && ( imageMipTailOffset == rhs.imageMipTailOffset )
   26038           && ( imageMipTailStride == rhs.imageMipTailStride );
   26039     }
   26040 
   26041     bool operator!=( SparseImageMemoryRequirements const& rhs ) const
   26042     {
   26043       return !operator==( rhs );
   26044     }
   26045 
   26046     SparseImageFormatProperties formatProperties;
   26047     uint32_t imageMipTailFirstLod;
   26048     DeviceSize imageMipTailSize;
   26049     DeviceSize imageMipTailOffset;
   26050     DeviceSize imageMipTailStride;
   26051   };
   26052   static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
   26053 
   26054   struct SparseImageFormatProperties2
   26055   {
   26056     operator VkSparseImageFormatProperties2 const&() const
   26057     {
   26058       return *reinterpret_cast<const VkSparseImageFormatProperties2*>(this);
   26059     }
   26060 
   26061     operator VkSparseImageFormatProperties2 &()
   26062     {
   26063       return *reinterpret_cast<VkSparseImageFormatProperties2*>(this);
   26064     }
   26065 
   26066     bool operator==( SparseImageFormatProperties2 const& rhs ) const
   26067     {
   26068       return ( sType == rhs.sType )
   26069           && ( pNext == rhs.pNext )
   26070           && ( properties == rhs.properties );
   26071     }
   26072 
   26073     bool operator!=( SparseImageFormatProperties2 const& rhs ) const
   26074     {
   26075       return !operator==( rhs );
   26076     }
   26077 
   26078   private:
   26079     StructureType sType = StructureType::eSparseImageFormatProperties2;
   26080 
   26081   public:
   26082     void* pNext = nullptr;
   26083     SparseImageFormatProperties properties;
   26084   };
   26085   static_assert( sizeof( SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), "struct and wrapper have different size!" );
   26086 
   26087   using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
   26088 
   26089   struct SparseImageMemoryRequirements2
   26090   {
   26091     operator VkSparseImageMemoryRequirements2 const&() const
   26092     {
   26093       return *reinterpret_cast<const VkSparseImageMemoryRequirements2*>(this);
   26094     }
   26095 
   26096     operator VkSparseImageMemoryRequirements2 &()
   26097     {
   26098       return *reinterpret_cast<VkSparseImageMemoryRequirements2*>(this);
   26099     }
   26100 
   26101     bool operator==( SparseImageMemoryRequirements2 const& rhs ) const
   26102     {
   26103       return ( sType == rhs.sType )
   26104           && ( pNext == rhs.pNext )
   26105           && ( memoryRequirements == rhs.memoryRequirements );
   26106     }
   26107 
   26108     bool operator!=( SparseImageMemoryRequirements2 const& rhs ) const
   26109     {
   26110       return !operator==( rhs );
   26111     }
   26112 
   26113   private:
   26114     StructureType sType = StructureType::eSparseImageMemoryRequirements2;
   26115 
   26116   public:
   26117     void* pNext = nullptr;
   26118     SparseImageMemoryRequirements memoryRequirements;
   26119   };
   26120   static_assert( sizeof( SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), "struct and wrapper have different size!" );
   26121 
   26122   using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
   26123 
   26124   enum class SparseMemoryBindFlagBits
   26125   {
   26126     eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
   26127   };
   26128 
   26129   using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
   26130 
   26131   VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
   26132   {
   26133     return SparseMemoryBindFlags( bit0 ) | bit1;
   26134   }
   26135 
   26136   VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
   26137   {
   26138     return ~( SparseMemoryBindFlags( bits ) );
   26139   }
   26140 
   26141   template <> struct FlagTraits<SparseMemoryBindFlagBits>
   26142   {
   26143     enum
   26144     {
   26145       allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
   26146     };
   26147   };
   26148 
   26149   struct SparseMemoryBind
   26150   {
   26151     SparseMemoryBind( DeviceSize resourceOffset_ = 0,
   26152                       DeviceSize size_ = 0,
   26153                       DeviceMemory memory_ = DeviceMemory(),
   26154                       DeviceSize memoryOffset_ = 0,
   26155                       SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
   26156       : resourceOffset( resourceOffset_ )
   26157       , size( size_ )
   26158       , memory( memory_ )
   26159       , memoryOffset( memoryOffset_ )
   26160       , flags( flags_ )
   26161     {
   26162     }
   26163 
   26164     SparseMemoryBind( VkSparseMemoryBind const & rhs )
   26165     {
   26166       memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
   26167     }
   26168 
   26169     SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
   26170     {
   26171       memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
   26172       return *this;
   26173     }
   26174     SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
   26175     {
   26176       resourceOffset = resourceOffset_;
   26177       return *this;
   26178     }
   26179 
   26180     SparseMemoryBind& setSize( DeviceSize size_ )
   26181     {
   26182       size = size_;
   26183       return *this;
   26184     }
   26185 
   26186     SparseMemoryBind& setMemory( DeviceMemory memory_ )
   26187     {
   26188       memory = memory_;
   26189       return *this;
   26190     }
   26191 
   26192     SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
   26193     {
   26194       memoryOffset = memoryOffset_;
   26195       return *this;
   26196     }
   26197 
   26198     SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
   26199     {
   26200       flags = flags_;
   26201       return *this;
   26202     }
   26203 
   26204     operator VkSparseMemoryBind const&() const
   26205     {
   26206       return *reinterpret_cast<const VkSparseMemoryBind*>(this);
   26207     }
   26208 
   26209     operator VkSparseMemoryBind &()
   26210     {
   26211       return *reinterpret_cast<VkSparseMemoryBind*>(this);
   26212     }
   26213 
   26214     bool operator==( SparseMemoryBind const& rhs ) const
   26215     {
   26216       return ( resourceOffset == rhs.resourceOffset )
   26217           && ( size == rhs.size )
   26218           && ( memory == rhs.memory )
   26219           && ( memoryOffset == rhs.memoryOffset )
   26220           && ( flags == rhs.flags );
   26221     }
   26222 
   26223     bool operator!=( SparseMemoryBind const& rhs ) const
   26224     {
   26225       return !operator==( rhs );
   26226     }
   26227 
   26228     DeviceSize resourceOffset;
   26229     DeviceSize size;
   26230     DeviceMemory memory;
   26231     DeviceSize memoryOffset;
   26232     SparseMemoryBindFlags flags;
   26233   };
   26234   static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
   26235 
   26236   struct SparseImageMemoryBind
   26237   {
   26238     SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(),
   26239                            Offset3D offset_ = Offset3D(),
   26240                            Extent3D extent_ = Extent3D(),
   26241                            DeviceMemory memory_ = DeviceMemory(),
   26242                            DeviceSize memoryOffset_ = 0,
   26243                            SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
   26244       : subresource( subresource_ )
   26245       , offset( offset_ )
   26246       , extent( extent_ )
   26247       , memory( memory_ )
   26248       , memoryOffset( memoryOffset_ )
   26249       , flags( flags_ )
   26250     {
   26251     }
   26252 
   26253     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
   26254     {
   26255       memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
   26256     }
   26257 
   26258     SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
   26259     {
   26260       memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
   26261       return *this;
   26262     }
   26263     SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
   26264     {
   26265       subresource = subresource_;
   26266       return *this;
   26267     }
   26268 
   26269     SparseImageMemoryBind& setOffset( Offset3D offset_ )
   26270     {
   26271       offset = offset_;
   26272       return *this;
   26273     }
   26274 
   26275     SparseImageMemoryBind& setExtent( Extent3D extent_ )
   26276     {
   26277       extent = extent_;
   26278       return *this;
   26279     }
   26280 
   26281     SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
   26282     {
   26283       memory = memory_;
   26284       return *this;
   26285     }
   26286 
   26287     SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
   26288     {
   26289       memoryOffset = memoryOffset_;
   26290       return *this;
   26291     }
   26292 
   26293     SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
   26294     {
   26295       flags = flags_;
   26296       return *this;
   26297     }
   26298 
   26299     operator VkSparseImageMemoryBind const&() const
   26300     {
   26301       return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
   26302     }
   26303 
   26304     operator VkSparseImageMemoryBind &()
   26305     {
   26306       return *reinterpret_cast<VkSparseImageMemoryBind*>(this);
   26307     }
   26308 
   26309     bool operator==( SparseImageMemoryBind const& rhs ) const
   26310     {
   26311       return ( subresource == rhs.subresource )
   26312           && ( offset == rhs.offset )
   26313           && ( extent == rhs.extent )
   26314           && ( memory == rhs.memory )
   26315           && ( memoryOffset == rhs.memoryOffset )
   26316           && ( flags == rhs.flags );
   26317     }
   26318 
   26319     bool operator!=( SparseImageMemoryBind const& rhs ) const
   26320     {
   26321       return !operator==( rhs );
   26322     }
   26323 
   26324     ImageSubresource subresource;
   26325     Offset3D offset;
   26326     Extent3D extent;
   26327     DeviceMemory memory;
   26328     DeviceSize memoryOffset;
   26329     SparseMemoryBindFlags flags;
   26330   };
   26331   static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
   26332 
   26333   struct SparseBufferMemoryBindInfo
   26334   {
   26335     SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(),
   26336                                 uint32_t bindCount_ = 0,
   26337                                 const SparseMemoryBind* pBinds_ = nullptr )
   26338       : buffer( buffer_ )
   26339       , bindCount( bindCount_ )
   26340       , pBinds( pBinds_ )
   26341     {
   26342     }
   26343 
   26344     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
   26345     {
   26346       memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
   26347     }
   26348 
   26349     SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
   26350     {
   26351       memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
   26352       return *this;
   26353     }
   26354     SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
   26355     {
   26356       buffer = buffer_;
   26357       return *this;
   26358     }
   26359 
   26360     SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
   26361     {
   26362       bindCount = bindCount_;
   26363       return *this;
   26364     }
   26365 
   26366     SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
   26367     {
   26368       pBinds = pBinds_;
   26369       return *this;
   26370     }
   26371 
   26372     operator VkSparseBufferMemoryBindInfo const&() const
   26373     {
   26374       return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
   26375     }
   26376 
   26377     operator VkSparseBufferMemoryBindInfo &()
   26378     {
   26379       return *reinterpret_cast<VkSparseBufferMemoryBindInfo*>(this);
   26380     }
   26381 
   26382     bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
   26383     {
   26384       return ( buffer == rhs.buffer )
   26385           && ( bindCount == rhs.bindCount )
   26386           && ( pBinds == rhs.pBinds );
   26387     }
   26388 
   26389     bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
   26390     {
   26391       return !operator==( rhs );
   26392     }
   26393 
   26394     Buffer buffer;
   26395     uint32_t bindCount;
   26396     const SparseMemoryBind* pBinds;
   26397   };
   26398   static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
   26399 
   26400   struct SparseImageOpaqueMemoryBindInfo
   26401   {
   26402     SparseImageOpaqueMemoryBindInfo( Image image_ = Image(),
   26403                                      uint32_t bindCount_ = 0,
   26404                                      const SparseMemoryBind* pBinds_ = nullptr )
   26405       : image( image_ )
   26406       , bindCount( bindCount_ )
   26407       , pBinds( pBinds_ )
   26408     {
   26409     }
   26410 
   26411     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
   26412     {
   26413       memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
   26414     }
   26415 
   26416     SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
   26417     {
   26418       memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
   26419       return *this;
   26420     }
   26421     SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
   26422     {
   26423       image = image_;
   26424       return *this;
   26425     }
   26426 
   26427     SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
   26428     {
   26429       bindCount = bindCount_;
   26430       return *this;
   26431     }
   26432 
   26433     SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
   26434     {
   26435       pBinds = pBinds_;
   26436       return *this;
   26437     }
   26438 
   26439     operator VkSparseImageOpaqueMemoryBindInfo const&() const
   26440     {
   26441       return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
   26442     }
   26443 
   26444     operator VkSparseImageOpaqueMemoryBindInfo &()
   26445     {
   26446       return *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo*>(this);
   26447     }
   26448 
   26449     bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
   26450     {
   26451       return ( image == rhs.image )
   26452           && ( bindCount == rhs.bindCount )
   26453           && ( pBinds == rhs.pBinds );
   26454     }
   26455 
   26456     bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
   26457     {
   26458       return !operator==( rhs );
   26459     }
   26460 
   26461     Image image;
   26462     uint32_t bindCount;
   26463     const SparseMemoryBind* pBinds;
   26464   };
   26465   static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
   26466 
   26467   struct SparseImageMemoryBindInfo
   26468   {
   26469     SparseImageMemoryBindInfo( Image image_ = Image(),
   26470                                uint32_t bindCount_ = 0,
   26471                                const SparseImageMemoryBind* pBinds_ = nullptr )
   26472       : image( image_ )
   26473       , bindCount( bindCount_ )
   26474       , pBinds( pBinds_ )
   26475     {
   26476     }
   26477 
   26478     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
   26479     {
   26480       memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
   26481     }
   26482 
   26483     SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
   26484     {
   26485       memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
   26486       return *this;
   26487     }
   26488     SparseImageMemoryBindInfo& setImage( Image image_ )
   26489     {
   26490       image = image_;
   26491       return *this;
   26492     }
   26493 
   26494     SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
   26495     {
   26496       bindCount = bindCount_;
   26497       return *this;
   26498     }
   26499 
   26500     SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
   26501     {
   26502       pBinds = pBinds_;
   26503       return *this;
   26504     }
   26505 
   26506     operator VkSparseImageMemoryBindInfo const&() const
   26507     {
   26508       return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
   26509     }
   26510 
   26511     operator VkSparseImageMemoryBindInfo &()
   26512     {
   26513       return *reinterpret_cast<VkSparseImageMemoryBindInfo*>(this);
   26514     }
   26515 
   26516     bool operator==( SparseImageMemoryBindInfo const& rhs ) const
   26517     {
   26518       return ( image == rhs.image )
   26519           && ( bindCount == rhs.bindCount )
   26520           && ( pBinds == rhs.pBinds );
   26521     }
   26522 
   26523     bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
   26524     {
   26525       return !operator==( rhs );
   26526     }
   26527 
   26528     Image image;
   26529     uint32_t bindCount;
   26530     const SparseImageMemoryBind* pBinds;
   26531   };
   26532   static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
   26533 
   26534   struct BindSparseInfo
   26535   {
   26536     BindSparseInfo( uint32_t waitSemaphoreCount_ = 0,
   26537                     const Semaphore* pWaitSemaphores_ = nullptr,
   26538                     uint32_t bufferBindCount_ = 0,
   26539                     const SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr,
   26540                     uint32_t imageOpaqueBindCount_ = 0,
   26541                     const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr,
   26542                     uint32_t imageBindCount_ = 0,
   26543                     const SparseImageMemoryBindInfo* pImageBinds_ = nullptr,
   26544                     uint32_t signalSemaphoreCount_ = 0,
   26545                     const Semaphore* pSignalSemaphores_ = nullptr )
   26546       : waitSemaphoreCount( waitSemaphoreCount_ )
   26547       , pWaitSemaphores( pWaitSemaphores_ )
   26548       , bufferBindCount( bufferBindCount_ )
   26549       , pBufferBinds( pBufferBinds_ )
   26550       , imageOpaqueBindCount( imageOpaqueBindCount_ )
   26551       , pImageOpaqueBinds( pImageOpaqueBinds_ )
   26552       , imageBindCount( imageBindCount_ )
   26553       , pImageBinds( pImageBinds_ )
   26554       , signalSemaphoreCount( signalSemaphoreCount_ )
   26555       , pSignalSemaphores( pSignalSemaphores_ )
   26556     {
   26557     }
   26558 
   26559     BindSparseInfo( VkBindSparseInfo const & rhs )
   26560     {
   26561       memcpy( this, &rhs, sizeof( BindSparseInfo ) );
   26562     }
   26563 
   26564     BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
   26565     {
   26566       memcpy( this, &rhs, sizeof( BindSparseInfo ) );
   26567       return *this;
   26568     }
   26569     BindSparseInfo& setPNext( const void* pNext_ )
   26570     {
   26571       pNext = pNext_;
   26572       return *this;
   26573     }
   26574 
   26575     BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
   26576     {
   26577       waitSemaphoreCount = waitSemaphoreCount_;
   26578       return *this;
   26579     }
   26580 
   26581     BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
   26582     {
   26583       pWaitSemaphores = pWaitSemaphores_;
   26584       return *this;
   26585     }
   26586 
   26587     BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
   26588     {
   26589       bufferBindCount = bufferBindCount_;
   26590       return *this;
   26591     }
   26592 
   26593     BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
   26594     {
   26595       pBufferBinds = pBufferBinds_;
   26596       return *this;
   26597     }
   26598 
   26599     BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
   26600     {
   26601       imageOpaqueBindCount = imageOpaqueBindCount_;
   26602       return *this;
   26603     }
   26604 
   26605     BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
   26606     {
   26607       pImageOpaqueBinds = pImageOpaqueBinds_;
   26608       return *this;
   26609     }
   26610 
   26611     BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
   26612     {
   26613       imageBindCount = imageBindCount_;
   26614       return *this;
   26615     }
   26616 
   26617     BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
   26618     {
   26619       pImageBinds = pImageBinds_;
   26620       return *this;
   26621     }
   26622 
   26623     BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
   26624     {
   26625       signalSemaphoreCount = signalSemaphoreCount_;
   26626       return *this;
   26627     }
   26628 
   26629     BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
   26630     {
   26631       pSignalSemaphores = pSignalSemaphores_;
   26632       return *this;
   26633     }
   26634 
   26635     operator VkBindSparseInfo const&() const
   26636     {
   26637       return *reinterpret_cast<const VkBindSparseInfo*>(this);
   26638     }
   26639 
   26640     operator VkBindSparseInfo &()
   26641     {
   26642       return *reinterpret_cast<VkBindSparseInfo*>(this);
   26643     }
   26644 
   26645     bool operator==( BindSparseInfo const& rhs ) const
   26646     {
   26647       return ( sType == rhs.sType )
   26648           && ( pNext == rhs.pNext )
   26649           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
   26650           && ( pWaitSemaphores == rhs.pWaitSemaphores )
   26651           && ( bufferBindCount == rhs.bufferBindCount )
   26652           && ( pBufferBinds == rhs.pBufferBinds )
   26653           && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
   26654           && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
   26655           && ( imageBindCount == rhs.imageBindCount )
   26656           && ( pImageBinds == rhs.pImageBinds )
   26657           && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
   26658           && ( pSignalSemaphores == rhs.pSignalSemaphores );
   26659     }
   26660 
   26661     bool operator!=( BindSparseInfo const& rhs ) const
   26662     {
   26663       return !operator==( rhs );
   26664     }
   26665 
   26666   private:
   26667     StructureType sType = StructureType::eBindSparseInfo;
   26668 
   26669   public:
   26670     const void* pNext = nullptr;
   26671     uint32_t waitSemaphoreCount;
   26672     const Semaphore* pWaitSemaphores;
   26673     uint32_t bufferBindCount;
   26674     const SparseBufferMemoryBindInfo* pBufferBinds;
   26675     uint32_t imageOpaqueBindCount;
   26676     const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
   26677     uint32_t imageBindCount;
   26678     const SparseImageMemoryBindInfo* pImageBinds;
   26679     uint32_t signalSemaphoreCount;
   26680     const Semaphore* pSignalSemaphores;
   26681   };
   26682   static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
   26683 
   26684   enum class PipelineStageFlagBits
   26685   {
   26686     eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
   26687     eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
   26688     eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
   26689     eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
   26690     eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
   26691     eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
   26692     eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
   26693     eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
   26694     eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
   26695     eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
   26696     eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
   26697     eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
   26698     eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
   26699     eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
   26700     eHost = VK_PIPELINE_STAGE_HOST_BIT,
   26701     eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
   26702     eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
   26703     eTransformFeedbackEXT = VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT,
   26704     eConditionalRenderingEXT = VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,
   26705     eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,
   26706     eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,
   26707     eRayTracingShaderNV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV,
   26708     eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,
   26709     eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV,
   26710     eMeshShaderNV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
   26711   };
   26712 
   26713   using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
   26714 
   26715   VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
   26716   {
   26717     return PipelineStageFlags( bit0 ) | bit1;
   26718   }
   26719 
   26720   VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
   26721   {
   26722     return ~( PipelineStageFlags( bits ) );
   26723   }
   26724 
   26725   template <> struct FlagTraits<PipelineStageFlagBits>
   26726   {
   26727     enum
   26728     {
   26729       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::eTransformFeedbackEXT) | VkFlags(PipelineStageFlagBits::eConditionalRenderingEXT) | VkFlags(PipelineStageFlagBits::eCommandProcessNVX) | VkFlags(PipelineStageFlagBits::eShadingRateImageNV) | VkFlags(PipelineStageFlagBits::eRayTracingShaderNV) | VkFlags(PipelineStageFlagBits::eAccelerationStructureBuildNV) | VkFlags(PipelineStageFlagBits::eTaskShaderNV) | VkFlags(PipelineStageFlagBits::eMeshShaderNV)
   26730     };
   26731   };
   26732 
   26733   struct QueueFamilyCheckpointPropertiesNV
   26734   {
   26735     operator VkQueueFamilyCheckpointPropertiesNV const&() const
   26736     {
   26737       return *reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV*>(this);
   26738     }
   26739 
   26740     operator VkQueueFamilyCheckpointPropertiesNV &()
   26741     {
   26742       return *reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV*>(this);
   26743     }
   26744 
   26745     bool operator==( QueueFamilyCheckpointPropertiesNV const& rhs ) const
   26746     {
   26747       return ( sType == rhs.sType )
   26748           && ( pNext == rhs.pNext )
   26749           && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
   26750     }
   26751 
   26752     bool operator!=( QueueFamilyCheckpointPropertiesNV const& rhs ) const
   26753     {
   26754       return !operator==( rhs );
   26755     }
   26756 
   26757   private:
   26758     StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV;
   26759 
   26760   public:
   26761     void* pNext = nullptr;
   26762     PipelineStageFlags checkpointExecutionStageMask;
   26763   };
   26764   static_assert( sizeof( QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), "struct and wrapper have different size!" );
   26765 
   26766   struct CheckpointDataNV
   26767   {
   26768     operator VkCheckpointDataNV const&() const
   26769     {
   26770       return *reinterpret_cast<const VkCheckpointDataNV*>(this);
   26771     }
   26772 
   26773     operator VkCheckpointDataNV &()
   26774     {
   26775       return *reinterpret_cast<VkCheckpointDataNV*>(this);
   26776     }
   26777 
   26778     bool operator==( CheckpointDataNV const& rhs ) const
   26779     {
   26780       return ( sType == rhs.sType )
   26781           && ( pNext == rhs.pNext )
   26782           && ( stage == rhs.stage )
   26783           && ( pCheckpointMarker == rhs.pCheckpointMarker );
   26784     }
   26785 
   26786     bool operator!=( CheckpointDataNV const& rhs ) const
   26787     {
   26788       return !operator==( rhs );
   26789     }
   26790 
   26791   private:
   26792     StructureType sType = StructureType::eCheckpointDataNV;
   26793 
   26794   public:
   26795     void* pNext = nullptr;
   26796     PipelineStageFlagBits stage;
   26797     void* pCheckpointMarker;
   26798   };
   26799   static_assert( sizeof( CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "struct and wrapper have different size!" );
   26800 
   26801   enum class CommandPoolCreateFlagBits
   26802   {
   26803     eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
   26804     eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
   26805     eProtected = VK_COMMAND_POOL_CREATE_PROTECTED_BIT
   26806   };
   26807 
   26808   using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
   26809 
   26810   VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
   26811   {
   26812     return CommandPoolCreateFlags( bit0 ) | bit1;
   26813   }
   26814 
   26815   VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
   26816   {
   26817     return ~( CommandPoolCreateFlags( bits ) );
   26818   }
   26819 
   26820   template <> struct FlagTraits<CommandPoolCreateFlagBits>
   26821   {
   26822     enum
   26823     {
   26824       allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer) | VkFlags(CommandPoolCreateFlagBits::eProtected)
   26825     };
   26826   };
   26827 
   26828   struct CommandPoolCreateInfo
   26829   {
   26830     CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(),
   26831                            uint32_t queueFamilyIndex_ = 0 )
   26832       : flags( flags_ )
   26833       , queueFamilyIndex( queueFamilyIndex_ )
   26834     {
   26835     }
   26836 
   26837     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
   26838     {
   26839       memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
   26840     }
   26841 
   26842     CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
   26843     {
   26844       memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
   26845       return *this;
   26846     }
   26847     CommandPoolCreateInfo& setPNext( const void* pNext_ )
   26848     {
   26849       pNext = pNext_;
   26850       return *this;
   26851     }
   26852 
   26853     CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
   26854     {
   26855       flags = flags_;
   26856       return *this;
   26857     }
   26858 
   26859     CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
   26860     {
   26861       queueFamilyIndex = queueFamilyIndex_;
   26862       return *this;
   26863     }
   26864 
   26865     operator VkCommandPoolCreateInfo const&() const
   26866     {
   26867       return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
   26868     }
   26869 
   26870     operator VkCommandPoolCreateInfo &()
   26871     {
   26872       return *reinterpret_cast<VkCommandPoolCreateInfo*>(this);
   26873     }
   26874 
   26875     bool operator==( CommandPoolCreateInfo const& rhs ) const
   26876     {
   26877       return ( sType == rhs.sType )
   26878           && ( pNext == rhs.pNext )
   26879           && ( flags == rhs.flags )
   26880           && ( queueFamilyIndex == rhs.queueFamilyIndex );
   26881     }
   26882 
   26883     bool operator!=( CommandPoolCreateInfo const& rhs ) const
   26884     {
   26885       return !operator==( rhs );
   26886     }
   26887 
   26888   private:
   26889     StructureType sType = StructureType::eCommandPoolCreateInfo;
   26890 
   26891   public:
   26892     const void* pNext = nullptr;
   26893     CommandPoolCreateFlags flags;
   26894     uint32_t queueFamilyIndex;
   26895   };
   26896   static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
   26897 
   26898   enum class CommandPoolResetFlagBits
   26899   {
   26900     eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
   26901   };
   26902 
   26903   using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
   26904 
   26905   VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
   26906   {
   26907     return CommandPoolResetFlags( bit0 ) | bit1;
   26908   }
   26909 
   26910   VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
   26911   {
   26912     return ~( CommandPoolResetFlags( bits ) );
   26913   }
   26914 
   26915   template <> struct FlagTraits<CommandPoolResetFlagBits>
   26916   {
   26917     enum
   26918     {
   26919       allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
   26920     };
   26921   };
   26922 
   26923   enum class CommandBufferResetFlagBits
   26924   {
   26925     eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
   26926   };
   26927 
   26928   using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
   26929 
   26930   VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
   26931   {
   26932     return CommandBufferResetFlags( bit0 ) | bit1;
   26933   }
   26934 
   26935   VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
   26936   {
   26937     return ~( CommandBufferResetFlags( bits ) );
   26938   }
   26939 
   26940   template <> struct FlagTraits<CommandBufferResetFlagBits>
   26941   {
   26942     enum
   26943     {
   26944       allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
   26945     };
   26946   };
   26947 
   26948   enum class SampleCountFlagBits
   26949   {
   26950     e1 = VK_SAMPLE_COUNT_1_BIT,
   26951     e2 = VK_SAMPLE_COUNT_2_BIT,
   26952     e4 = VK_SAMPLE_COUNT_4_BIT,
   26953     e8 = VK_SAMPLE_COUNT_8_BIT,
   26954     e16 = VK_SAMPLE_COUNT_16_BIT,
   26955     e32 = VK_SAMPLE_COUNT_32_BIT,
   26956     e64 = VK_SAMPLE_COUNT_64_BIT
   26957   };
   26958 
   26959   using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
   26960 
   26961   VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
   26962   {
   26963     return SampleCountFlags( bit0 ) | bit1;
   26964   }
   26965 
   26966   VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
   26967   {
   26968     return ~( SampleCountFlags( bits ) );
   26969   }
   26970 
   26971   template <> struct FlagTraits<SampleCountFlagBits>
   26972   {
   26973     enum
   26974     {
   26975       allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
   26976     };
   26977   };
   26978 
   26979   struct ImageFormatProperties
   26980   {
   26981     operator VkImageFormatProperties const&() const
   26982     {
   26983       return *reinterpret_cast<const VkImageFormatProperties*>(this);
   26984     }
   26985 
   26986     operator VkImageFormatProperties &()
   26987     {
   26988       return *reinterpret_cast<VkImageFormatProperties*>(this);
   26989     }
   26990 
   26991     bool operator==( ImageFormatProperties const& rhs ) const
   26992     {
   26993       return ( maxExtent == rhs.maxExtent )
   26994           && ( maxMipLevels == rhs.maxMipLevels )
   26995           && ( maxArrayLayers == rhs.maxArrayLayers )
   26996           && ( sampleCounts == rhs.sampleCounts )
   26997           && ( maxResourceSize == rhs.maxResourceSize );
   26998     }
   26999 
   27000     bool operator!=( ImageFormatProperties const& rhs ) const
   27001     {
   27002       return !operator==( rhs );
   27003     }
   27004 
   27005     Extent3D maxExtent;
   27006     uint32_t maxMipLevels;
   27007     uint32_t maxArrayLayers;
   27008     SampleCountFlags sampleCounts;
   27009     DeviceSize maxResourceSize;
   27010   };
   27011   static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
   27012 
   27013   struct ImageCreateInfo
   27014   {
   27015     ImageCreateInfo( ImageCreateFlags flags_ = ImageCreateFlags(),
   27016                      ImageType imageType_ = ImageType::e1D,
   27017                      Format format_ = Format::eUndefined,
   27018                      Extent3D extent_ = Extent3D(),
   27019                      uint32_t mipLevels_ = 0,
   27020                      uint32_t arrayLayers_ = 0,
   27021                      SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
   27022                      ImageTiling tiling_ = ImageTiling::eOptimal,
   27023                      ImageUsageFlags usage_ = ImageUsageFlags(),
   27024                      SharingMode sharingMode_ = SharingMode::eExclusive,
   27025                      uint32_t queueFamilyIndexCount_ = 0,
   27026                      const uint32_t* pQueueFamilyIndices_ = nullptr,
   27027                      ImageLayout initialLayout_ = ImageLayout::eUndefined )
   27028       : flags( flags_ )
   27029       , imageType( imageType_ )
   27030       , format( format_ )
   27031       , extent( extent_ )
   27032       , mipLevels( mipLevels_ )
   27033       , arrayLayers( arrayLayers_ )
   27034       , samples( samples_ )
   27035       , tiling( tiling_ )
   27036       , usage( usage_ )
   27037       , sharingMode( sharingMode_ )
   27038       , queueFamilyIndexCount( queueFamilyIndexCount_ )
   27039       , pQueueFamilyIndices( pQueueFamilyIndices_ )
   27040       , initialLayout( initialLayout_ )
   27041     {
   27042     }
   27043 
   27044     ImageCreateInfo( VkImageCreateInfo const & rhs )
   27045     {
   27046       memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
   27047     }
   27048 
   27049     ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
   27050     {
   27051       memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
   27052       return *this;
   27053     }
   27054     ImageCreateInfo& setPNext( const void* pNext_ )
   27055     {
   27056       pNext = pNext_;
   27057       return *this;
   27058     }
   27059 
   27060     ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
   27061     {
   27062       flags = flags_;
   27063       return *this;
   27064     }
   27065 
   27066     ImageCreateInfo& setImageType( ImageType imageType_ )
   27067     {
   27068       imageType = imageType_;
   27069       return *this;
   27070     }
   27071 
   27072     ImageCreateInfo& setFormat( Format format_ )
   27073     {
   27074       format = format_;
   27075       return *this;
   27076     }
   27077 
   27078     ImageCreateInfo& setExtent( Extent3D extent_ )
   27079     {
   27080       extent = extent_;
   27081       return *this;
   27082     }
   27083 
   27084     ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
   27085     {
   27086       mipLevels = mipLevels_;
   27087       return *this;
   27088     }
   27089 
   27090     ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
   27091     {
   27092       arrayLayers = arrayLayers_;
   27093       return *this;
   27094     }
   27095 
   27096     ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
   27097     {
   27098       samples = samples_;
   27099       return *this;
   27100     }
   27101 
   27102     ImageCreateInfo& setTiling( ImageTiling tiling_ )
   27103     {
   27104       tiling = tiling_;
   27105       return *this;
   27106     }
   27107 
   27108     ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
   27109     {
   27110       usage = usage_;
   27111       return *this;
   27112     }
   27113 
   27114     ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
   27115     {
   27116       sharingMode = sharingMode_;
   27117       return *this;
   27118     }
   27119 
   27120     ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
   27121     {
   27122       queueFamilyIndexCount = queueFamilyIndexCount_;
   27123       return *this;
   27124     }
   27125 
   27126     ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
   27127     {
   27128       pQueueFamilyIndices = pQueueFamilyIndices_;
   27129       return *this;
   27130     }
   27131 
   27132     ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
   27133     {
   27134       initialLayout = initialLayout_;
   27135       return *this;
   27136     }
   27137 
   27138     operator VkImageCreateInfo const&() const
   27139     {
   27140       return *reinterpret_cast<const VkImageCreateInfo*>(this);
   27141     }
   27142 
   27143     operator VkImageCreateInfo &()
   27144     {
   27145       return *reinterpret_cast<VkImageCreateInfo*>(this);
   27146     }
   27147 
   27148     bool operator==( ImageCreateInfo const& rhs ) const
   27149     {
   27150       return ( sType == rhs.sType )
   27151           && ( pNext == rhs.pNext )
   27152           && ( flags == rhs.flags )
   27153           && ( imageType == rhs.imageType )
   27154           && ( format == rhs.format )
   27155           && ( extent == rhs.extent )
   27156           && ( mipLevels == rhs.mipLevels )
   27157           && ( arrayLayers == rhs.arrayLayers )
   27158           && ( samples == rhs.samples )
   27159           && ( tiling == rhs.tiling )
   27160           && ( usage == rhs.usage )
   27161           && ( sharingMode == rhs.sharingMode )
   27162           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
   27163           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
   27164           && ( initialLayout == rhs.initialLayout );
   27165     }
   27166 
   27167     bool operator!=( ImageCreateInfo const& rhs ) const
   27168     {
   27169       return !operator==( rhs );
   27170     }
   27171 
   27172   private:
   27173     StructureType sType = StructureType::eImageCreateInfo;
   27174 
   27175   public:
   27176     const void* pNext = nullptr;
   27177     ImageCreateFlags flags;
   27178     ImageType imageType;
   27179     Format format;
   27180     Extent3D extent;
   27181     uint32_t mipLevels;
   27182     uint32_t arrayLayers;
   27183     SampleCountFlagBits samples;
   27184     ImageTiling tiling;
   27185     ImageUsageFlags usage;
   27186     SharingMode sharingMode;
   27187     uint32_t queueFamilyIndexCount;
   27188     const uint32_t* pQueueFamilyIndices;
   27189     ImageLayout initialLayout;
   27190   };
   27191   static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
   27192 
   27193   struct PipelineMultisampleStateCreateInfo
   27194   {
   27195     PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(),
   27196                                         SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1,
   27197                                         Bool32 sampleShadingEnable_ = 0,
   27198                                         float minSampleShading_ = 0,
   27199                                         const SampleMask* pSampleMask_ = nullptr,
   27200                                         Bool32 alphaToCoverageEnable_ = 0,
   27201                                         Bool32 alphaToOneEnable_ = 0 )
   27202       : flags( flags_ )
   27203       , rasterizationSamples( rasterizationSamples_ )
   27204       , sampleShadingEnable( sampleShadingEnable_ )
   27205       , minSampleShading( minSampleShading_ )
   27206       , pSampleMask( pSampleMask_ )
   27207       , alphaToCoverageEnable( alphaToCoverageEnable_ )
   27208       , alphaToOneEnable( alphaToOneEnable_ )
   27209     {
   27210     }
   27211 
   27212     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
   27213     {
   27214       memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
   27215     }
   27216 
   27217     PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
   27218     {
   27219       memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
   27220       return *this;
   27221     }
   27222     PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
   27223     {
   27224       pNext = pNext_;
   27225       return *this;
   27226     }
   27227 
   27228     PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
   27229     {
   27230       flags = flags_;
   27231       return *this;
   27232     }
   27233 
   27234     PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
   27235     {
   27236       rasterizationSamples = rasterizationSamples_;
   27237       return *this;
   27238     }
   27239 
   27240     PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
   27241     {
   27242       sampleShadingEnable = sampleShadingEnable_;
   27243       return *this;
   27244     }
   27245 
   27246     PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
   27247     {
   27248       minSampleShading = minSampleShading_;
   27249       return *this;
   27250     }
   27251 
   27252     PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
   27253     {
   27254       pSampleMask = pSampleMask_;
   27255       return *this;
   27256     }
   27257 
   27258     PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
   27259     {
   27260       alphaToCoverageEnable = alphaToCoverageEnable_;
   27261       return *this;
   27262     }
   27263 
   27264     PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
   27265     {
   27266       alphaToOneEnable = alphaToOneEnable_;
   27267       return *this;
   27268     }
   27269 
   27270     operator VkPipelineMultisampleStateCreateInfo const&() const
   27271     {
   27272       return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
   27273     }
   27274 
   27275     operator VkPipelineMultisampleStateCreateInfo &()
   27276     {
   27277       return *reinterpret_cast<VkPipelineMultisampleStateCreateInfo*>(this);
   27278     }
   27279 
   27280     bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
   27281     {
   27282       return ( sType == rhs.sType )
   27283           && ( pNext == rhs.pNext )
   27284           && ( flags == rhs.flags )
   27285           && ( rasterizationSamples == rhs.rasterizationSamples )
   27286           && ( sampleShadingEnable == rhs.sampleShadingEnable )
   27287           && ( minSampleShading == rhs.minSampleShading )
   27288           && ( pSampleMask == rhs.pSampleMask )
   27289           && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
   27290           && ( alphaToOneEnable == rhs.alphaToOneEnable );
   27291     }
   27292 
   27293     bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
   27294     {
   27295       return !operator==( rhs );
   27296     }
   27297 
   27298   private:
   27299     StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
   27300 
   27301   public:
   27302     const void* pNext = nullptr;
   27303     PipelineMultisampleStateCreateFlags flags;
   27304     SampleCountFlagBits rasterizationSamples;
   27305     Bool32 sampleShadingEnable;
   27306     float minSampleShading;
   27307     const SampleMask* pSampleMask;
   27308     Bool32 alphaToCoverageEnable;
   27309     Bool32 alphaToOneEnable;
   27310   };
   27311   static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
   27312 
   27313   struct GraphicsPipelineCreateInfo
   27314   {
   27315     GraphicsPipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(),
   27316                                 uint32_t stageCount_ = 0,
   27317                                 const PipelineShaderStageCreateInfo* pStages_ = nullptr,
   27318                                 const PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr,
   27319                                 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr,
   27320                                 const PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr,
   27321                                 const PipelineViewportStateCreateInfo* pViewportState_ = nullptr,
   27322                                 const PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr,
   27323                                 const PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr,
   27324                                 const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr,
   27325                                 const PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr,
   27326                                 const PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr,
   27327                                 PipelineLayout layout_ = PipelineLayout(),
   27328                                 RenderPass renderPass_ = RenderPass(),
   27329                                 uint32_t subpass_ = 0,
   27330                                 Pipeline basePipelineHandle_ = Pipeline(),
   27331                                 int32_t basePipelineIndex_ = 0 )
   27332       : flags( flags_ )
   27333       , stageCount( stageCount_ )
   27334       , pStages( pStages_ )
   27335       , pVertexInputState( pVertexInputState_ )
   27336       , pInputAssemblyState( pInputAssemblyState_ )
   27337       , pTessellationState( pTessellationState_ )
   27338       , pViewportState( pViewportState_ )
   27339       , pRasterizationState( pRasterizationState_ )
   27340       , pMultisampleState( pMultisampleState_ )
   27341       , pDepthStencilState( pDepthStencilState_ )
   27342       , pColorBlendState( pColorBlendState_ )
   27343       , pDynamicState( pDynamicState_ )
   27344       , layout( layout_ )
   27345       , renderPass( renderPass_ )
   27346       , subpass( subpass_ )
   27347       , basePipelineHandle( basePipelineHandle_ )
   27348       , basePipelineIndex( basePipelineIndex_ )
   27349     {
   27350     }
   27351 
   27352     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
   27353     {
   27354       memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
   27355     }
   27356 
   27357     GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
   27358     {
   27359       memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
   27360       return *this;
   27361     }
   27362     GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
   27363     {
   27364       pNext = pNext_;
   27365       return *this;
   27366     }
   27367 
   27368     GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
   27369     {
   27370       flags = flags_;
   27371       return *this;
   27372     }
   27373 
   27374     GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
   27375     {
   27376       stageCount = stageCount_;
   27377       return *this;
   27378     }
   27379 
   27380     GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
   27381     {
   27382       pStages = pStages_;
   27383       return *this;
   27384     }
   27385 
   27386     GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
   27387     {
   27388       pVertexInputState = pVertexInputState_;
   27389       return *this;
   27390     }
   27391 
   27392     GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
   27393     {
   27394       pInputAssemblyState = pInputAssemblyState_;
   27395       return *this;
   27396     }
   27397 
   27398     GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
   27399     {
   27400       pTessellationState = pTessellationState_;
   27401       return *this;
   27402     }
   27403 
   27404     GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
   27405     {
   27406       pViewportState = pViewportState_;
   27407       return *this;
   27408     }
   27409 
   27410     GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
   27411     {
   27412       pRasterizationState = pRasterizationState_;
   27413       return *this;
   27414     }
   27415 
   27416     GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
   27417     {
   27418       pMultisampleState = pMultisampleState_;
   27419       return *this;
   27420     }
   27421 
   27422     GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
   27423     {
   27424       pDepthStencilState = pDepthStencilState_;
   27425       return *this;
   27426     }
   27427 
   27428     GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
   27429     {
   27430       pColorBlendState = pColorBlendState_;
   27431       return *this;
   27432     }
   27433 
   27434     GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
   27435     {
   27436       pDynamicState = pDynamicState_;
   27437       return *this;
   27438     }
   27439 
   27440     GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
   27441     {
   27442       layout = layout_;
   27443       return *this;
   27444     }
   27445 
   27446     GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
   27447     {
   27448       renderPass = renderPass_;
   27449       return *this;
   27450     }
   27451 
   27452     GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
   27453     {
   27454       subpass = subpass_;
   27455       return *this;
   27456     }
   27457 
   27458     GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
   27459     {
   27460       basePipelineHandle = basePipelineHandle_;
   27461       return *this;
   27462     }
   27463 
   27464     GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
   27465     {
   27466       basePipelineIndex = basePipelineIndex_;
   27467       return *this;
   27468     }
   27469 
   27470     operator VkGraphicsPipelineCreateInfo const&() const
   27471     {
   27472       return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
   27473     }
   27474 
   27475     operator VkGraphicsPipelineCreateInfo &()
   27476     {
   27477       return *reinterpret_cast<VkGraphicsPipelineCreateInfo*>(this);
   27478     }
   27479 
   27480     bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
   27481     {
   27482       return ( sType == rhs.sType )
   27483           && ( pNext == rhs.pNext )
   27484           && ( flags == rhs.flags )
   27485           && ( stageCount == rhs.stageCount )
   27486           && ( pStages == rhs.pStages )
   27487           && ( pVertexInputState == rhs.pVertexInputState )
   27488           && ( pInputAssemblyState == rhs.pInputAssemblyState )
   27489           && ( pTessellationState == rhs.pTessellationState )
   27490           && ( pViewportState == rhs.pViewportState )
   27491           && ( pRasterizationState == rhs.pRasterizationState )
   27492           && ( pMultisampleState == rhs.pMultisampleState )
   27493           && ( pDepthStencilState == rhs.pDepthStencilState )
   27494           && ( pColorBlendState == rhs.pColorBlendState )
   27495           && ( pDynamicState == rhs.pDynamicState )
   27496           && ( layout == rhs.layout )
   27497           && ( renderPass == rhs.renderPass )
   27498           && ( subpass == rhs.subpass )
   27499           && ( basePipelineHandle == rhs.basePipelineHandle )
   27500           && ( basePipelineIndex == rhs.basePipelineIndex );
   27501     }
   27502 
   27503     bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
   27504     {
   27505       return !operator==( rhs );
   27506     }
   27507 
   27508   private:
   27509     StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
   27510 
   27511   public:
   27512     const void* pNext = nullptr;
   27513     PipelineCreateFlags flags;
   27514     uint32_t stageCount;
   27515     const PipelineShaderStageCreateInfo* pStages;
   27516     const PipelineVertexInputStateCreateInfo* pVertexInputState;
   27517     const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
   27518     const PipelineTessellationStateCreateInfo* pTessellationState;
   27519     const PipelineViewportStateCreateInfo* pViewportState;
   27520     const PipelineRasterizationStateCreateInfo* pRasterizationState;
   27521     const PipelineMultisampleStateCreateInfo* pMultisampleState;
   27522     const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
   27523     const PipelineColorBlendStateCreateInfo* pColorBlendState;
   27524     const PipelineDynamicStateCreateInfo* pDynamicState;
   27525     PipelineLayout layout;
   27526     RenderPass renderPass;
   27527     uint32_t subpass;
   27528     Pipeline basePipelineHandle;
   27529     int32_t basePipelineIndex;
   27530   };
   27531   static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
   27532 
   27533   struct PhysicalDeviceLimits
   27534   {
   27535     operator VkPhysicalDeviceLimits const&() const
   27536     {
   27537       return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
   27538     }
   27539 
   27540     operator VkPhysicalDeviceLimits &()
   27541     {
   27542       return *reinterpret_cast<VkPhysicalDeviceLimits*>(this);
   27543     }
   27544 
   27545     bool operator==( PhysicalDeviceLimits const& rhs ) const
   27546     {
   27547       return ( maxImageDimension1D == rhs.maxImageDimension1D )
   27548           && ( maxImageDimension2D == rhs.maxImageDimension2D )
   27549           && ( maxImageDimension3D == rhs.maxImageDimension3D )
   27550           && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
   27551           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
   27552           && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
   27553           && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
   27554           && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
   27555           && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
   27556           && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
   27557           && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
   27558           && ( bufferImageGranularity == rhs.bufferImageGranularity )
   27559           && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
   27560           && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
   27561           && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
   27562           && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
   27563           && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
   27564           && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
   27565           && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
   27566           && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
   27567           && ( maxPerStageResources == rhs.maxPerStageResources )
   27568           && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
   27569           && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
   27570           && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
   27571           && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
   27572           && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
   27573           && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
   27574           && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
   27575           && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
   27576           && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
   27577           && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
   27578           && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
   27579           && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
   27580           && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
   27581           && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
   27582           && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
   27583           && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
   27584           && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
   27585           && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
   27586           && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
   27587           && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
   27588           && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
   27589           && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
   27590           && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
   27591           && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
   27592           && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
   27593           && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
   27594           && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
   27595           && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
   27596           && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
   27597           && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
   27598           && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
   27599           && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
   27600           && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
   27601           && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
   27602           && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
   27603           && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
   27604           && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
   27605           && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
   27606           && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
   27607           && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
   27608           && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
   27609           && ( maxViewports == rhs.maxViewports )
   27610           && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
   27611           && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
   27612           && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
   27613           && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
   27614           && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
   27615           && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
   27616           && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
   27617           && ( minTexelOffset == rhs.minTexelOffset )
   27618           && ( maxTexelOffset == rhs.maxTexelOffset )
   27619           && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
   27620           && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
   27621           && ( minInterpolationOffset == rhs.minInterpolationOffset )
   27622           && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
   27623           && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
   27624           && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
   27625           && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
   27626           && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
   27627           && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
   27628           && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
   27629           && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
   27630           && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
   27631           && ( maxColorAttachments == rhs.maxColorAttachments )
   27632           && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
   27633           && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
   27634           && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
   27635           && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
   27636           && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
   27637           && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
   27638           && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
   27639           && ( timestampPeriod == rhs.timestampPeriod )
   27640           && ( maxClipDistances == rhs.maxClipDistances )
   27641           && ( maxCullDistances == rhs.maxCullDistances )
   27642           && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
   27643           && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
   27644           && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
   27645           && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
   27646           && ( pointSizeGranularity == rhs.pointSizeGranularity )
   27647           && ( lineWidthGranularity == rhs.lineWidthGranularity )
   27648           && ( strictLines == rhs.strictLines )
   27649           && ( standardSampleLocations == rhs.standardSampleLocations )
   27650           && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
   27651           && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
   27652           && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
   27653     }
   27654 
   27655     bool operator!=( PhysicalDeviceLimits const& rhs ) const
   27656     {
   27657       return !operator==( rhs );
   27658     }
   27659 
   27660     uint32_t maxImageDimension1D;
   27661     uint32_t maxImageDimension2D;
   27662     uint32_t maxImageDimension3D;
   27663     uint32_t maxImageDimensionCube;
   27664     uint32_t maxImageArrayLayers;
   27665     uint32_t maxTexelBufferElements;
   27666     uint32_t maxUniformBufferRange;
   27667     uint32_t maxStorageBufferRange;
   27668     uint32_t maxPushConstantsSize;
   27669     uint32_t maxMemoryAllocationCount;
   27670     uint32_t maxSamplerAllocationCount;
   27671     DeviceSize bufferImageGranularity;
   27672     DeviceSize sparseAddressSpaceSize;
   27673     uint32_t maxBoundDescriptorSets;
   27674     uint32_t maxPerStageDescriptorSamplers;
   27675     uint32_t maxPerStageDescriptorUniformBuffers;
   27676     uint32_t maxPerStageDescriptorStorageBuffers;
   27677     uint32_t maxPerStageDescriptorSampledImages;
   27678     uint32_t maxPerStageDescriptorStorageImages;
   27679     uint32_t maxPerStageDescriptorInputAttachments;
   27680     uint32_t maxPerStageResources;
   27681     uint32_t maxDescriptorSetSamplers;
   27682     uint32_t maxDescriptorSetUniformBuffers;
   27683     uint32_t maxDescriptorSetUniformBuffersDynamic;
   27684     uint32_t maxDescriptorSetStorageBuffers;
   27685     uint32_t maxDescriptorSetStorageBuffersDynamic;
   27686     uint32_t maxDescriptorSetSampledImages;
   27687     uint32_t maxDescriptorSetStorageImages;
   27688     uint32_t maxDescriptorSetInputAttachments;
   27689     uint32_t maxVertexInputAttributes;
   27690     uint32_t maxVertexInputBindings;
   27691     uint32_t maxVertexInputAttributeOffset;
   27692     uint32_t maxVertexInputBindingStride;
   27693     uint32_t maxVertexOutputComponents;
   27694     uint32_t maxTessellationGenerationLevel;
   27695     uint32_t maxTessellationPatchSize;
   27696     uint32_t maxTessellationControlPerVertexInputComponents;
   27697     uint32_t maxTessellationControlPerVertexOutputComponents;
   27698     uint32_t maxTessellationControlPerPatchOutputComponents;
   27699     uint32_t maxTessellationControlTotalOutputComponents;
   27700     uint32_t maxTessellationEvaluationInputComponents;
   27701     uint32_t maxTessellationEvaluationOutputComponents;
   27702     uint32_t maxGeometryShaderInvocations;
   27703     uint32_t maxGeometryInputComponents;
   27704     uint32_t maxGeometryOutputComponents;
   27705     uint32_t maxGeometryOutputVertices;
   27706     uint32_t maxGeometryTotalOutputComponents;
   27707     uint32_t maxFragmentInputComponents;
   27708     uint32_t maxFragmentOutputAttachments;
   27709     uint32_t maxFragmentDualSrcAttachments;
   27710     uint32_t maxFragmentCombinedOutputResources;
   27711     uint32_t maxComputeSharedMemorySize;
   27712     uint32_t maxComputeWorkGroupCount[3];
   27713     uint32_t maxComputeWorkGroupInvocations;
   27714     uint32_t maxComputeWorkGroupSize[3];
   27715     uint32_t subPixelPrecisionBits;
   27716     uint32_t subTexelPrecisionBits;
   27717     uint32_t mipmapPrecisionBits;
   27718     uint32_t maxDrawIndexedIndexValue;
   27719     uint32_t maxDrawIndirectCount;
   27720     float maxSamplerLodBias;
   27721     float maxSamplerAnisotropy;
   27722     uint32_t maxViewports;
   27723     uint32_t maxViewportDimensions[2];
   27724     float viewportBoundsRange[2];
   27725     uint32_t viewportSubPixelBits;
   27726     size_t minMemoryMapAlignment;
   27727     DeviceSize minTexelBufferOffsetAlignment;
   27728     DeviceSize minUniformBufferOffsetAlignment;
   27729     DeviceSize minStorageBufferOffsetAlignment;
   27730     int32_t minTexelOffset;
   27731     uint32_t maxTexelOffset;
   27732     int32_t minTexelGatherOffset;
   27733     uint32_t maxTexelGatherOffset;
   27734     float minInterpolationOffset;
   27735     float maxInterpolationOffset;
   27736     uint32_t subPixelInterpolationOffsetBits;
   27737     uint32_t maxFramebufferWidth;
   27738     uint32_t maxFramebufferHeight;
   27739     uint32_t maxFramebufferLayers;
   27740     SampleCountFlags framebufferColorSampleCounts;
   27741     SampleCountFlags framebufferDepthSampleCounts;
   27742     SampleCountFlags framebufferStencilSampleCounts;
   27743     SampleCountFlags framebufferNoAttachmentsSampleCounts;
   27744     uint32_t maxColorAttachments;
   27745     SampleCountFlags sampledImageColorSampleCounts;
   27746     SampleCountFlags sampledImageIntegerSampleCounts;
   27747     SampleCountFlags sampledImageDepthSampleCounts;
   27748     SampleCountFlags sampledImageStencilSampleCounts;
   27749     SampleCountFlags storageImageSampleCounts;
   27750     uint32_t maxSampleMaskWords;
   27751     Bool32 timestampComputeAndGraphics;
   27752     float timestampPeriod;
   27753     uint32_t maxClipDistances;
   27754     uint32_t maxCullDistances;
   27755     uint32_t maxCombinedClipAndCullDistances;
   27756     uint32_t discreteQueuePriorities;
   27757     float pointSizeRange[2];
   27758     float lineWidthRange[2];
   27759     float pointSizeGranularity;
   27760     float lineWidthGranularity;
   27761     Bool32 strictLines;
   27762     Bool32 standardSampleLocations;
   27763     DeviceSize optimalBufferCopyOffsetAlignment;
   27764     DeviceSize optimalBufferCopyRowPitchAlignment;
   27765     DeviceSize nonCoherentAtomSize;
   27766   };
   27767   static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
   27768 
   27769   struct PhysicalDeviceProperties
   27770   {
   27771     operator VkPhysicalDeviceProperties const&() const
   27772     {
   27773       return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
   27774     }
   27775 
   27776     operator VkPhysicalDeviceProperties &()
   27777     {
   27778       return *reinterpret_cast<VkPhysicalDeviceProperties*>(this);
   27779     }
   27780 
   27781     bool operator==( PhysicalDeviceProperties const& rhs ) const
   27782     {
   27783       return ( apiVersion == rhs.apiVersion )
   27784           && ( driverVersion == rhs.driverVersion )
   27785           && ( vendorID == rhs.vendorID )
   27786           && ( deviceID == rhs.deviceID )
   27787           && ( deviceType == rhs.deviceType )
   27788           && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
   27789           && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
   27790           && ( limits == rhs.limits )
   27791           && ( sparseProperties == rhs.sparseProperties );
   27792     }
   27793 
   27794     bool operator!=( PhysicalDeviceProperties const& rhs ) const
   27795     {
   27796       return !operator==( rhs );
   27797     }
   27798 
   27799     uint32_t apiVersion;
   27800     uint32_t driverVersion;
   27801     uint32_t vendorID;
   27802     uint32_t deviceID;
   27803     PhysicalDeviceType deviceType;
   27804     char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
   27805     uint8_t pipelineCacheUUID[VK_UUID_SIZE];
   27806     PhysicalDeviceLimits limits;
   27807     PhysicalDeviceSparseProperties sparseProperties;
   27808   };
   27809   static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
   27810 
   27811   struct PhysicalDeviceProperties2
   27812   {
   27813     operator VkPhysicalDeviceProperties2 const&() const
   27814     {
   27815       return *reinterpret_cast<const VkPhysicalDeviceProperties2*>(this);
   27816     }
   27817 
   27818     operator VkPhysicalDeviceProperties2 &()
   27819     {
   27820       return *reinterpret_cast<VkPhysicalDeviceProperties2*>(this);
   27821     }
   27822 
   27823     bool operator==( PhysicalDeviceProperties2 const& rhs ) const
   27824     {
   27825       return ( sType == rhs.sType )
   27826           && ( pNext == rhs.pNext )
   27827           && ( properties == rhs.properties );
   27828     }
   27829 
   27830     bool operator!=( PhysicalDeviceProperties2 const& rhs ) const
   27831     {
   27832       return !operator==( rhs );
   27833     }
   27834 
   27835   private:
   27836     StructureType sType = StructureType::ePhysicalDeviceProperties2;
   27837 
   27838   public:
   27839     void* pNext = nullptr;
   27840     PhysicalDeviceProperties properties;
   27841   };
   27842   static_assert( sizeof( PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), "struct and wrapper have different size!" );
   27843 
   27844   using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
   27845 
   27846   struct ImageFormatProperties2
   27847   {
   27848     operator VkImageFormatProperties2 const&() const
   27849     {
   27850       return *reinterpret_cast<const VkImageFormatProperties2*>(this);
   27851     }
   27852 
   27853     operator VkImageFormatProperties2 &()
   27854     {
   27855       return *reinterpret_cast<VkImageFormatProperties2*>(this);
   27856     }
   27857 
   27858     bool operator==( ImageFormatProperties2 const& rhs ) const
   27859     {
   27860       return ( sType == rhs.sType )
   27861           && ( pNext == rhs.pNext )
   27862           && ( imageFormatProperties == rhs.imageFormatProperties );
   27863     }
   27864 
   27865     bool operator!=( ImageFormatProperties2 const& rhs ) const
   27866     {
   27867       return !operator==( rhs );
   27868     }
   27869 
   27870   private:
   27871     StructureType sType = StructureType::eImageFormatProperties2;
   27872 
   27873   public:
   27874     void* pNext = nullptr;
   27875     ImageFormatProperties imageFormatProperties;
   27876   };
   27877   static_assert( sizeof( ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), "struct and wrapper have different size!" );
   27878 
   27879   using ImageFormatProperties2KHR = ImageFormatProperties2;
   27880 
   27881   struct PhysicalDeviceSparseImageFormatInfo2
   27882   {
   27883     PhysicalDeviceSparseImageFormatInfo2( Format format_ = Format::eUndefined,
   27884                                           ImageType type_ = ImageType::e1D,
   27885                                           SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
   27886                                           ImageUsageFlags usage_ = ImageUsageFlags(),
   27887                                           ImageTiling tiling_ = ImageTiling::eOptimal )
   27888       : format( format_ )
   27889       , type( type_ )
   27890       , samples( samples_ )
   27891       , usage( usage_ )
   27892       , tiling( tiling_ )
   27893     {
   27894     }
   27895 
   27896     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
   27897     {
   27898       memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
   27899     }
   27900 
   27901     PhysicalDeviceSparseImageFormatInfo2& operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
   27902     {
   27903       memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
   27904       return *this;
   27905     }
   27906     PhysicalDeviceSparseImageFormatInfo2& setPNext( const void* pNext_ )
   27907     {
   27908       pNext = pNext_;
   27909       return *this;
   27910     }
   27911 
   27912     PhysicalDeviceSparseImageFormatInfo2& setFormat( Format format_ )
   27913     {
   27914       format = format_;
   27915       return *this;
   27916     }
   27917 
   27918     PhysicalDeviceSparseImageFormatInfo2& setType( ImageType type_ )
   27919     {
   27920       type = type_;
   27921       return *this;
   27922     }
   27923 
   27924     PhysicalDeviceSparseImageFormatInfo2& setSamples( SampleCountFlagBits samples_ )
   27925     {
   27926       samples = samples_;
   27927       return *this;
   27928     }
   27929 
   27930     PhysicalDeviceSparseImageFormatInfo2& setUsage( ImageUsageFlags usage_ )
   27931     {
   27932       usage = usage_;
   27933       return *this;
   27934     }
   27935 
   27936     PhysicalDeviceSparseImageFormatInfo2& setTiling( ImageTiling tiling_ )
   27937     {
   27938       tiling = tiling_;
   27939       return *this;
   27940     }
   27941 
   27942     operator VkPhysicalDeviceSparseImageFormatInfo2 const&() const
   27943     {
   27944       return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>(this);
   27945     }
   27946 
   27947     operator VkPhysicalDeviceSparseImageFormatInfo2 &()
   27948     {
   27949       return *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2*>(this);
   27950     }
   27951 
   27952     bool operator==( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const
   27953     {
   27954       return ( sType == rhs.sType )
   27955           && ( pNext == rhs.pNext )
   27956           && ( format == rhs.format )
   27957           && ( type == rhs.type )
   27958           && ( samples == rhs.samples )
   27959           && ( usage == rhs.usage )
   27960           && ( tiling == rhs.tiling );
   27961     }
   27962 
   27963     bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const
   27964     {
   27965       return !operator==( rhs );
   27966     }
   27967 
   27968   private:
   27969     StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
   27970 
   27971   public:
   27972     const void* pNext = nullptr;
   27973     Format format;
   27974     ImageType type;
   27975     SampleCountFlagBits samples;
   27976     ImageUsageFlags usage;
   27977     ImageTiling tiling;
   27978   };
   27979   static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), "struct and wrapper have different size!" );
   27980 
   27981   using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
   27982 
   27983   struct SampleLocationsInfoEXT
   27984   {
   27985     SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1,
   27986                             Extent2D sampleLocationGridSize_ = Extent2D(),
   27987                             uint32_t sampleLocationsCount_ = 0,
   27988                             const SampleLocationEXT* pSampleLocations_ = nullptr )
   27989       : sampleLocationsPerPixel( sampleLocationsPerPixel_ )
   27990       , sampleLocationGridSize( sampleLocationGridSize_ )
   27991       , sampleLocationsCount( sampleLocationsCount_ )
   27992       , pSampleLocations( pSampleLocations_ )
   27993     {
   27994     }
   27995 
   27996     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
   27997     {
   27998       memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
   27999     }
   28000 
   28001     SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
   28002     {
   28003       memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
   28004       return *this;
   28005     }
   28006     SampleLocationsInfoEXT& setPNext( const void* pNext_ )
   28007     {
   28008       pNext = pNext_;
   28009       return *this;
   28010     }
   28011 
   28012     SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
   28013     {
   28014       sampleLocationsPerPixel = sampleLocationsPerPixel_;
   28015       return *this;
   28016     }
   28017 
   28018     SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
   28019     {
   28020       sampleLocationGridSize = sampleLocationGridSize_;
   28021       return *this;
   28022     }
   28023 
   28024     SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
   28025     {
   28026       sampleLocationsCount = sampleLocationsCount_;
   28027       return *this;
   28028     }
   28029 
   28030     SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
   28031     {
   28032       pSampleLocations = pSampleLocations_;
   28033       return *this;
   28034     }
   28035 
   28036     operator VkSampleLocationsInfoEXT const&() const
   28037     {
   28038       return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
   28039     }
   28040 
   28041     operator VkSampleLocationsInfoEXT &()
   28042     {
   28043       return *reinterpret_cast<VkSampleLocationsInfoEXT*>(this);
   28044     }
   28045 
   28046     bool operator==( SampleLocationsInfoEXT const& rhs ) const
   28047     {
   28048       return ( sType == rhs.sType )
   28049           && ( pNext == rhs.pNext )
   28050           && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
   28051           && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
   28052           && ( sampleLocationsCount == rhs.sampleLocationsCount )
   28053           && ( pSampleLocations == rhs.pSampleLocations );
   28054     }
   28055 
   28056     bool operator!=( SampleLocationsInfoEXT const& rhs ) const
   28057     {
   28058       return !operator==( rhs );
   28059     }
   28060 
   28061   private:
   28062     StructureType sType = StructureType::eSampleLocationsInfoEXT;
   28063 
   28064   public:
   28065     const void* pNext = nullptr;
   28066     SampleCountFlagBits sampleLocationsPerPixel;
   28067     Extent2D sampleLocationGridSize;
   28068     uint32_t sampleLocationsCount;
   28069     const SampleLocationEXT* pSampleLocations;
   28070   };
   28071   static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
   28072 
   28073   struct AttachmentSampleLocationsEXT
   28074   {
   28075     AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0,
   28076                                   SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
   28077       : attachmentIndex( attachmentIndex_ )
   28078       , sampleLocationsInfo( sampleLocationsInfo_ )
   28079     {
   28080     }
   28081 
   28082     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
   28083     {
   28084       memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
   28085     }
   28086 
   28087     AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
   28088     {
   28089       memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
   28090       return *this;
   28091     }
   28092     AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
   28093     {
   28094       attachmentIndex = attachmentIndex_;
   28095       return *this;
   28096     }
   28097 
   28098     AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
   28099     {
   28100       sampleLocationsInfo = sampleLocationsInfo_;
   28101       return *this;
   28102     }
   28103 
   28104     operator VkAttachmentSampleLocationsEXT const&() const
   28105     {
   28106       return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
   28107     }
   28108 
   28109     operator VkAttachmentSampleLocationsEXT &()
   28110     {
   28111       return *reinterpret_cast<VkAttachmentSampleLocationsEXT*>(this);
   28112     }
   28113 
   28114     bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
   28115     {
   28116       return ( attachmentIndex == rhs.attachmentIndex )
   28117           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
   28118     }
   28119 
   28120     bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
   28121     {
   28122       return !operator==( rhs );
   28123     }
   28124 
   28125     uint32_t attachmentIndex;
   28126     SampleLocationsInfoEXT sampleLocationsInfo;
   28127   };
   28128   static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
   28129 
   28130   struct SubpassSampleLocationsEXT
   28131   {
   28132     SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0,
   28133                                SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
   28134       : subpassIndex( subpassIndex_ )
   28135       , sampleLocationsInfo( sampleLocationsInfo_ )
   28136     {
   28137     }
   28138 
   28139     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
   28140     {
   28141       memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
   28142     }
   28143 
   28144     SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
   28145     {
   28146       memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
   28147       return *this;
   28148     }
   28149     SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
   28150     {
   28151       subpassIndex = subpassIndex_;
   28152       return *this;
   28153     }
   28154 
   28155     SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
   28156     {
   28157       sampleLocationsInfo = sampleLocationsInfo_;
   28158       return *this;
   28159     }
   28160 
   28161     operator VkSubpassSampleLocationsEXT const&() const
   28162     {
   28163       return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
   28164     }
   28165 
   28166     operator VkSubpassSampleLocationsEXT &()
   28167     {
   28168       return *reinterpret_cast<VkSubpassSampleLocationsEXT*>(this);
   28169     }
   28170 
   28171     bool operator==( SubpassSampleLocationsEXT const& rhs ) const
   28172     {
   28173       return ( subpassIndex == rhs.subpassIndex )
   28174           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
   28175     }
   28176 
   28177     bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
   28178     {
   28179       return !operator==( rhs );
   28180     }
   28181 
   28182     uint32_t subpassIndex;
   28183     SampleLocationsInfoEXT sampleLocationsInfo;
   28184   };
   28185   static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
   28186 
   28187   struct RenderPassSampleLocationsBeginInfoEXT
   28188   {
   28189     RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0,
   28190                                            const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr,
   28191                                            uint32_t postSubpassSampleLocationsCount_ = 0,
   28192                                            const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
   28193       : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
   28194       , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
   28195       , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
   28196       , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
   28197     {
   28198     }
   28199 
   28200     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
   28201     {
   28202       memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
   28203     }
   28204 
   28205     RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
   28206     {
   28207       memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
   28208       return *this;
   28209     }
   28210     RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
   28211     {
   28212       pNext = pNext_;
   28213       return *this;
   28214     }
   28215 
   28216     RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
   28217     {
   28218       attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
   28219       return *this;
   28220     }
   28221 
   28222     RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
   28223     {
   28224       pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
   28225       return *this;
   28226     }
   28227 
   28228     RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
   28229     {
   28230       postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
   28231       return *this;
   28232     }
   28233 
   28234     RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
   28235     {
   28236       pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
   28237       return *this;
   28238     }
   28239 
   28240     operator VkRenderPassSampleLocationsBeginInfoEXT const&() const
   28241     {
   28242       return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
   28243     }
   28244 
   28245     operator VkRenderPassSampleLocationsBeginInfoEXT &()
   28246     {
   28247       return *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>(this);
   28248     }
   28249 
   28250     bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
   28251     {
   28252       return ( sType == rhs.sType )
   28253           && ( pNext == rhs.pNext )
   28254           && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
   28255           && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
   28256           && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
   28257           && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
   28258     }
   28259 
   28260     bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
   28261     {
   28262       return !operator==( rhs );
   28263     }
   28264 
   28265   private:
   28266     StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
   28267 
   28268   public:
   28269     const void* pNext = nullptr;
   28270     uint32_t attachmentInitialSampleLocationsCount;
   28271     const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
   28272     uint32_t postSubpassSampleLocationsCount;
   28273     const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
   28274   };
   28275   static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
   28276 
   28277   struct PipelineSampleLocationsStateCreateInfoEXT
   28278   {
   28279     PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0,
   28280                                                SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
   28281       : sampleLocationsEnable( sampleLocationsEnable_ )
   28282       , sampleLocationsInfo( sampleLocationsInfo_ )
   28283     {
   28284     }
   28285 
   28286     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
   28287     {
   28288       memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
   28289     }
   28290 
   28291     PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
   28292     {
   28293       memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
   28294       return *this;
   28295     }
   28296     PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
   28297     {
   28298       pNext = pNext_;
   28299       return *this;
   28300     }
   28301 
   28302     PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
   28303     {
   28304       sampleLocationsEnable = sampleLocationsEnable_;
   28305       return *this;
   28306     }
   28307 
   28308     PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
   28309     {
   28310       sampleLocationsInfo = sampleLocationsInfo_;
   28311       return *this;
   28312     }
   28313 
   28314     operator VkPipelineSampleLocationsStateCreateInfoEXT const&() const
   28315     {
   28316       return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
   28317     }
   28318 
   28319     operator VkPipelineSampleLocationsStateCreateInfoEXT &()
   28320     {
   28321       return *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
   28322     }
   28323 
   28324     bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
   28325     {
   28326       return ( sType == rhs.sType )
   28327           && ( pNext == rhs.pNext )
   28328           && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
   28329           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
   28330     }
   28331 
   28332     bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
   28333     {
   28334       return !operator==( rhs );
   28335     }
   28336 
   28337   private:
   28338     StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
   28339 
   28340   public:
   28341     const void* pNext = nullptr;
   28342     Bool32 sampleLocationsEnable;
   28343     SampleLocationsInfoEXT sampleLocationsInfo;
   28344   };
   28345   static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
   28346 
   28347   struct PhysicalDeviceSampleLocationsPropertiesEXT
   28348   {
   28349     operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&() const
   28350     {
   28351       return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
   28352     }
   28353 
   28354     operator VkPhysicalDeviceSampleLocationsPropertiesEXT &()
   28355     {
   28356       return *reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
   28357     }
   28358 
   28359     bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
   28360     {
   28361       return ( sType == rhs.sType )
   28362           && ( pNext == rhs.pNext )
   28363           && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
   28364           && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
   28365           && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
   28366           && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
   28367           && ( variableSampleLocations == rhs.variableSampleLocations );
   28368     }
   28369 
   28370     bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
   28371     {
   28372       return !operator==( rhs );
   28373     }
   28374 
   28375   private:
   28376     StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
   28377 
   28378   public:
   28379     void* pNext = nullptr;
   28380     SampleCountFlags sampleLocationSampleCounts;
   28381     Extent2D maxSampleLocationGridSize;
   28382     float sampleLocationCoordinateRange[2];
   28383     uint32_t sampleLocationSubPixelBits;
   28384     Bool32 variableSampleLocations;
   28385   };
   28386   static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
   28387 
   28388   enum class AttachmentDescriptionFlagBits
   28389   {
   28390     eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
   28391   };
   28392 
   28393   using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
   28394 
   28395   VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
   28396   {
   28397     return AttachmentDescriptionFlags( bit0 ) | bit1;
   28398   }
   28399 
   28400   VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
   28401   {
   28402     return ~( AttachmentDescriptionFlags( bits ) );
   28403   }
   28404 
   28405   template <> struct FlagTraits<AttachmentDescriptionFlagBits>
   28406   {
   28407     enum
   28408     {
   28409       allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
   28410     };
   28411   };
   28412 
   28413   struct AttachmentDescription
   28414   {
   28415     AttachmentDescription( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(),
   28416                            Format format_ = Format::eUndefined,
   28417                            SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
   28418                            AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad,
   28419                            AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore,
   28420                            AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad,
   28421                            AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore,
   28422                            ImageLayout initialLayout_ = ImageLayout::eUndefined,
   28423                            ImageLayout finalLayout_ = ImageLayout::eUndefined )
   28424       : flags( flags_ )
   28425       , format( format_ )
   28426       , samples( samples_ )
   28427       , loadOp( loadOp_ )
   28428       , storeOp( storeOp_ )
   28429       , stencilLoadOp( stencilLoadOp_ )
   28430       , stencilStoreOp( stencilStoreOp_ )
   28431       , initialLayout( initialLayout_ )
   28432       , finalLayout( finalLayout_ )
   28433     {
   28434     }
   28435 
   28436     AttachmentDescription( VkAttachmentDescription const & rhs )
   28437     {
   28438       memcpy( this, &rhs, sizeof( AttachmentDescription ) );
   28439     }
   28440 
   28441     AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
   28442     {
   28443       memcpy( this, &rhs, sizeof( AttachmentDescription ) );
   28444       return *this;
   28445     }
   28446     AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
   28447     {
   28448       flags = flags_;
   28449       return *this;
   28450     }
   28451 
   28452     AttachmentDescription& setFormat( Format format_ )
   28453     {
   28454       format = format_;
   28455       return *this;
   28456     }
   28457 
   28458     AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
   28459     {
   28460       samples = samples_;
   28461       return *this;
   28462     }
   28463 
   28464     AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
   28465     {
   28466       loadOp = loadOp_;
   28467       return *this;
   28468     }
   28469 
   28470     AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
   28471     {
   28472       storeOp = storeOp_;
   28473       return *this;
   28474     }
   28475 
   28476     AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
   28477     {
   28478       stencilLoadOp = stencilLoadOp_;
   28479       return *this;
   28480     }
   28481 
   28482     AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
   28483     {
   28484       stencilStoreOp = stencilStoreOp_;
   28485       return *this;
   28486     }
   28487 
   28488     AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
   28489     {
   28490       initialLayout = initialLayout_;
   28491       return *this;
   28492     }
   28493 
   28494     AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
   28495     {
   28496       finalLayout = finalLayout_;
   28497       return *this;
   28498     }
   28499 
   28500     operator VkAttachmentDescription const&() const
   28501     {
   28502       return *reinterpret_cast<const VkAttachmentDescription*>(this);
   28503     }
   28504 
   28505     operator VkAttachmentDescription &()
   28506     {
   28507       return *reinterpret_cast<VkAttachmentDescription*>(this);
   28508     }
   28509 
   28510     bool operator==( AttachmentDescription const& rhs ) const
   28511     {
   28512       return ( flags == rhs.flags )
   28513           && ( format == rhs.format )
   28514           && ( samples == rhs.samples )
   28515           && ( loadOp == rhs.loadOp )
   28516           && ( storeOp == rhs.storeOp )
   28517           && ( stencilLoadOp == rhs.stencilLoadOp )
   28518           && ( stencilStoreOp == rhs.stencilStoreOp )
   28519           && ( initialLayout == rhs.initialLayout )
   28520           && ( finalLayout == rhs.finalLayout );
   28521     }
   28522 
   28523     bool operator!=( AttachmentDescription const& rhs ) const
   28524     {
   28525       return !operator==( rhs );
   28526     }
   28527 
   28528     AttachmentDescriptionFlags flags;
   28529     Format format;
   28530     SampleCountFlagBits samples;
   28531     AttachmentLoadOp loadOp;
   28532     AttachmentStoreOp storeOp;
   28533     AttachmentLoadOp stencilLoadOp;
   28534     AttachmentStoreOp stencilStoreOp;
   28535     ImageLayout initialLayout;
   28536     ImageLayout finalLayout;
   28537   };
   28538   static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
   28539 
   28540   struct AttachmentDescription2KHR
   28541   {
   28542     AttachmentDescription2KHR( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(),
   28543                                Format format_ = Format::eUndefined,
   28544                                SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
   28545                                AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad,
   28546                                AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore,
   28547                                AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad,
   28548                                AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore,
   28549                                ImageLayout initialLayout_ = ImageLayout::eUndefined,
   28550                                ImageLayout finalLayout_ = ImageLayout::eUndefined )
   28551       : flags( flags_ )
   28552       , format( format_ )
   28553       , samples( samples_ )
   28554       , loadOp( loadOp_ )
   28555       , storeOp( storeOp_ )
   28556       , stencilLoadOp( stencilLoadOp_ )
   28557       , stencilStoreOp( stencilStoreOp_ )
   28558       , initialLayout( initialLayout_ )
   28559       , finalLayout( finalLayout_ )
   28560     {
   28561     }
   28562 
   28563     AttachmentDescription2KHR( VkAttachmentDescription2KHR const & rhs )
   28564     {
   28565       memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
   28566     }
   28567 
   28568     AttachmentDescription2KHR& operator=( VkAttachmentDescription2KHR const & rhs )
   28569     {
   28570       memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
   28571       return *this;
   28572     }
   28573     AttachmentDescription2KHR& setPNext( const void* pNext_ )
   28574     {
   28575       pNext = pNext_;
   28576       return *this;
   28577     }
   28578 
   28579     AttachmentDescription2KHR& setFlags( AttachmentDescriptionFlags flags_ )
   28580     {
   28581       flags = flags_;
   28582       return *this;
   28583     }
   28584 
   28585     AttachmentDescription2KHR& setFormat( Format format_ )
   28586     {
   28587       format = format_;
   28588       return *this;
   28589     }
   28590 
   28591     AttachmentDescription2KHR& setSamples( SampleCountFlagBits samples_ )
   28592     {
   28593       samples = samples_;
   28594       return *this;
   28595     }
   28596 
   28597     AttachmentDescription2KHR& setLoadOp( AttachmentLoadOp loadOp_ )
   28598     {
   28599       loadOp = loadOp_;
   28600       return *this;
   28601     }
   28602 
   28603     AttachmentDescription2KHR& setStoreOp( AttachmentStoreOp storeOp_ )
   28604     {
   28605       storeOp = storeOp_;
   28606       return *this;
   28607     }
   28608 
   28609     AttachmentDescription2KHR& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
   28610     {
   28611       stencilLoadOp = stencilLoadOp_;
   28612       return *this;
   28613     }
   28614 
   28615     AttachmentDescription2KHR& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
   28616     {
   28617       stencilStoreOp = stencilStoreOp_;
   28618       return *this;
   28619     }
   28620 
   28621     AttachmentDescription2KHR& setInitialLayout( ImageLayout initialLayout_ )
   28622     {
   28623       initialLayout = initialLayout_;
   28624       return *this;
   28625     }
   28626 
   28627     AttachmentDescription2KHR& setFinalLayout( ImageLayout finalLayout_ )
   28628     {
   28629       finalLayout = finalLayout_;
   28630       return *this;
   28631     }
   28632 
   28633     operator VkAttachmentDescription2KHR const&() const
   28634     {
   28635       return *reinterpret_cast<const VkAttachmentDescription2KHR*>(this);
   28636     }
   28637 
   28638     operator VkAttachmentDescription2KHR &()
   28639     {
   28640       return *reinterpret_cast<VkAttachmentDescription2KHR*>(this);
   28641     }
   28642 
   28643     bool operator==( AttachmentDescription2KHR const& rhs ) const
   28644     {
   28645       return ( sType == rhs.sType )
   28646           && ( pNext == rhs.pNext )
   28647           && ( flags == rhs.flags )
   28648           && ( format == rhs.format )
   28649           && ( samples == rhs.samples )
   28650           && ( loadOp == rhs.loadOp )
   28651           && ( storeOp == rhs.storeOp )
   28652           && ( stencilLoadOp == rhs.stencilLoadOp )
   28653           && ( stencilStoreOp == rhs.stencilStoreOp )
   28654           && ( initialLayout == rhs.initialLayout )
   28655           && ( finalLayout == rhs.finalLayout );
   28656     }
   28657 
   28658     bool operator!=( AttachmentDescription2KHR const& rhs ) const
   28659     {
   28660       return !operator==( rhs );
   28661     }
   28662 
   28663   private:
   28664     StructureType sType = StructureType::eAttachmentDescription2KHR;
   28665 
   28666   public:
   28667     const void* pNext = nullptr;
   28668     AttachmentDescriptionFlags flags;
   28669     Format format;
   28670     SampleCountFlagBits samples;
   28671     AttachmentLoadOp loadOp;
   28672     AttachmentStoreOp storeOp;
   28673     AttachmentLoadOp stencilLoadOp;
   28674     AttachmentStoreOp stencilStoreOp;
   28675     ImageLayout initialLayout;
   28676     ImageLayout finalLayout;
   28677   };
   28678   static_assert( sizeof( AttachmentDescription2KHR ) == sizeof( VkAttachmentDescription2KHR ), "struct and wrapper have different size!" );
   28679 
   28680   enum class StencilFaceFlagBits
   28681   {
   28682     eFront = VK_STENCIL_FACE_FRONT_BIT,
   28683     eBack = VK_STENCIL_FACE_BACK_BIT,
   28684     eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
   28685   };
   28686 
   28687   using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
   28688 
   28689   VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
   28690   {
   28691     return StencilFaceFlags( bit0 ) | bit1;
   28692   }
   28693 
   28694   VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
   28695   {
   28696     return ~( StencilFaceFlags( bits ) );
   28697   }
   28698 
   28699   template <> struct FlagTraits<StencilFaceFlagBits>
   28700   {
   28701     enum
   28702     {
   28703       allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
   28704     };
   28705   };
   28706 
   28707   enum class DescriptorPoolCreateFlagBits
   28708   {
   28709     eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
   28710     eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
   28711   };
   28712 
   28713   using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
   28714 
   28715   VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
   28716   {
   28717     return DescriptorPoolCreateFlags( bit0 ) | bit1;
   28718   }
   28719 
   28720   VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
   28721   {
   28722     return ~( DescriptorPoolCreateFlags( bits ) );
   28723   }
   28724 
   28725   template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
   28726   {
   28727     enum
   28728     {
   28729       allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet) | VkFlags(DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT)
   28730     };
   28731   };
   28732 
   28733   struct DescriptorPoolCreateInfo
   28734   {
   28735     DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(),
   28736                               uint32_t maxSets_ = 0,
   28737                               uint32_t poolSizeCount_ = 0,
   28738                               const DescriptorPoolSize* pPoolSizes_ = nullptr )
   28739       : flags( flags_ )
   28740       , maxSets( maxSets_ )
   28741       , poolSizeCount( poolSizeCount_ )
   28742       , pPoolSizes( pPoolSizes_ )
   28743     {
   28744     }
   28745 
   28746     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
   28747     {
   28748       memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
   28749     }
   28750 
   28751     DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
   28752     {
   28753       memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
   28754       return *this;
   28755     }
   28756     DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
   28757     {
   28758       pNext = pNext_;
   28759       return *this;
   28760     }
   28761 
   28762     DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
   28763     {
   28764       flags = flags_;
   28765       return *this;
   28766     }
   28767 
   28768     DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
   28769     {
   28770       maxSets = maxSets_;
   28771       return *this;
   28772     }
   28773 
   28774     DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
   28775     {
   28776       poolSizeCount = poolSizeCount_;
   28777       return *this;
   28778     }
   28779 
   28780     DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
   28781     {
   28782       pPoolSizes = pPoolSizes_;
   28783       return *this;
   28784     }
   28785 
   28786     operator VkDescriptorPoolCreateInfo const&() const
   28787     {
   28788       return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
   28789     }
   28790 
   28791     operator VkDescriptorPoolCreateInfo &()
   28792     {
   28793       return *reinterpret_cast<VkDescriptorPoolCreateInfo*>(this);
   28794     }
   28795 
   28796     bool operator==( DescriptorPoolCreateInfo const& rhs ) const
   28797     {
   28798       return ( sType == rhs.sType )
   28799           && ( pNext == rhs.pNext )
   28800           && ( flags == rhs.flags )
   28801           && ( maxSets == rhs.maxSets )
   28802           && ( poolSizeCount == rhs.poolSizeCount )
   28803           && ( pPoolSizes == rhs.pPoolSizes );
   28804     }
   28805 
   28806     bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
   28807     {
   28808       return !operator==( rhs );
   28809     }
   28810 
   28811   private:
   28812     StructureType sType = StructureType::eDescriptorPoolCreateInfo;
   28813 
   28814   public:
   28815     const void* pNext = nullptr;
   28816     DescriptorPoolCreateFlags flags;
   28817     uint32_t maxSets;
   28818     uint32_t poolSizeCount;
   28819     const DescriptorPoolSize* pPoolSizes;
   28820   };
   28821   static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
   28822 
   28823   enum class DependencyFlagBits
   28824   {
   28825     eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
   28826     eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT,
   28827     eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
   28828     eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT,
   28829     eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT
   28830   };
   28831 
   28832   using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
   28833 
   28834   VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
   28835   {
   28836     return DependencyFlags( bit0 ) | bit1;
   28837   }
   28838 
   28839   VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
   28840   {
   28841     return ~( DependencyFlags( bits ) );
   28842   }
   28843 
   28844   template <> struct FlagTraits<DependencyFlagBits>
   28845   {
   28846     enum
   28847     {
   28848       allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eDeviceGroup) | VkFlags(DependencyFlagBits::eViewLocal)
   28849     };
   28850   };
   28851 
   28852   struct SubpassDependency
   28853   {
   28854     SubpassDependency( uint32_t srcSubpass_ = 0,
   28855                        uint32_t dstSubpass_ = 0,
   28856                        PipelineStageFlags srcStageMask_ = PipelineStageFlags(),
   28857                        PipelineStageFlags dstStageMask_ = PipelineStageFlags(),
   28858                        AccessFlags srcAccessMask_ = AccessFlags(),
   28859                        AccessFlags dstAccessMask_ = AccessFlags(),
   28860                        DependencyFlags dependencyFlags_ = DependencyFlags() )
   28861       : srcSubpass( srcSubpass_ )
   28862       , dstSubpass( dstSubpass_ )
   28863       , srcStageMask( srcStageMask_ )
   28864       , dstStageMask( dstStageMask_ )
   28865       , srcAccessMask( srcAccessMask_ )
   28866       , dstAccessMask( dstAccessMask_ )
   28867       , dependencyFlags( dependencyFlags_ )
   28868     {
   28869     }
   28870 
   28871     SubpassDependency( VkSubpassDependency const & rhs )
   28872     {
   28873       memcpy( this, &rhs, sizeof( SubpassDependency ) );
   28874     }
   28875 
   28876     SubpassDependency& operator=( VkSubpassDependency const & rhs )
   28877     {
   28878       memcpy( this, &rhs, sizeof( SubpassDependency ) );
   28879       return *this;
   28880     }
   28881     SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
   28882     {
   28883       srcSubpass = srcSubpass_;
   28884       return *this;
   28885     }
   28886 
   28887     SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
   28888     {
   28889       dstSubpass = dstSubpass_;
   28890       return *this;
   28891     }
   28892 
   28893     SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
   28894     {
   28895       srcStageMask = srcStageMask_;
   28896       return *this;
   28897     }
   28898 
   28899     SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
   28900     {
   28901       dstStageMask = dstStageMask_;
   28902       return *this;
   28903     }
   28904 
   28905     SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
   28906     {
   28907       srcAccessMask = srcAccessMask_;
   28908       return *this;
   28909     }
   28910 
   28911     SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
   28912     {
   28913       dstAccessMask = dstAccessMask_;
   28914       return *this;
   28915     }
   28916 
   28917     SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
   28918     {
   28919       dependencyFlags = dependencyFlags_;
   28920       return *this;
   28921     }
   28922 
   28923     operator VkSubpassDependency const&() const
   28924     {
   28925       return *reinterpret_cast<const VkSubpassDependency*>(this);
   28926     }
   28927 
   28928     operator VkSubpassDependency &()
   28929     {
   28930       return *reinterpret_cast<VkSubpassDependency*>(this);
   28931     }
   28932 
   28933     bool operator==( SubpassDependency const& rhs ) const
   28934     {
   28935       return ( srcSubpass == rhs.srcSubpass )
   28936           && ( dstSubpass == rhs.dstSubpass )
   28937           && ( srcStageMask == rhs.srcStageMask )
   28938           && ( dstStageMask == rhs.dstStageMask )
   28939           && ( srcAccessMask == rhs.srcAccessMask )
   28940           && ( dstAccessMask == rhs.dstAccessMask )
   28941           && ( dependencyFlags == rhs.dependencyFlags );
   28942     }
   28943 
   28944     bool operator!=( SubpassDependency const& rhs ) const
   28945     {
   28946       return !operator==( rhs );
   28947     }
   28948 
   28949     uint32_t srcSubpass;
   28950     uint32_t dstSubpass;
   28951     PipelineStageFlags srcStageMask;
   28952     PipelineStageFlags dstStageMask;
   28953     AccessFlags srcAccessMask;
   28954     AccessFlags dstAccessMask;
   28955     DependencyFlags dependencyFlags;
   28956   };
   28957   static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
   28958 
   28959   struct SubpassDependency2KHR
   28960   {
   28961     SubpassDependency2KHR( uint32_t srcSubpass_ = 0,
   28962                            uint32_t dstSubpass_ = 0,
   28963                            PipelineStageFlags srcStageMask_ = PipelineStageFlags(),
   28964                            PipelineStageFlags dstStageMask_ = PipelineStageFlags(),
   28965                            AccessFlags srcAccessMask_ = AccessFlags(),
   28966                            AccessFlags dstAccessMask_ = AccessFlags(),
   28967                            DependencyFlags dependencyFlags_ = DependencyFlags(),
   28968                            int32_t viewOffset_ = 0 )
   28969       : srcSubpass( srcSubpass_ )
   28970       , dstSubpass( dstSubpass_ )
   28971       , srcStageMask( srcStageMask_ )
   28972       , dstStageMask( dstStageMask_ )
   28973       , srcAccessMask( srcAccessMask_ )
   28974       , dstAccessMask( dstAccessMask_ )
   28975       , dependencyFlags( dependencyFlags_ )
   28976       , viewOffset( viewOffset_ )
   28977     {
   28978     }
   28979 
   28980     SubpassDependency2KHR( VkSubpassDependency2KHR const & rhs )
   28981     {
   28982       memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
   28983     }
   28984 
   28985     SubpassDependency2KHR& operator=( VkSubpassDependency2KHR const & rhs )
   28986     {
   28987       memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
   28988       return *this;
   28989     }
   28990     SubpassDependency2KHR& setPNext( const void* pNext_ )
   28991     {
   28992       pNext = pNext_;
   28993       return *this;
   28994     }
   28995 
   28996     SubpassDependency2KHR& setSrcSubpass( uint32_t srcSubpass_ )
   28997     {
   28998       srcSubpass = srcSubpass_;
   28999       return *this;
   29000     }
   29001 
   29002     SubpassDependency2KHR& setDstSubpass( uint32_t dstSubpass_ )
   29003     {
   29004       dstSubpass = dstSubpass_;
   29005       return *this;
   29006     }
   29007 
   29008     SubpassDependency2KHR& setSrcStageMask( PipelineStageFlags srcStageMask_ )
   29009     {
   29010       srcStageMask = srcStageMask_;
   29011       return *this;
   29012     }
   29013 
   29014     SubpassDependency2KHR& setDstStageMask( PipelineStageFlags dstStageMask_ )
   29015     {
   29016       dstStageMask = dstStageMask_;
   29017       return *this;
   29018     }
   29019 
   29020     SubpassDependency2KHR& setSrcAccessMask( AccessFlags srcAccessMask_ )
   29021     {
   29022       srcAccessMask = srcAccessMask_;
   29023       return *this;
   29024     }
   29025 
   29026     SubpassDependency2KHR& setDstAccessMask( AccessFlags dstAccessMask_ )
   29027     {
   29028       dstAccessMask = dstAccessMask_;
   29029       return *this;
   29030     }
   29031 
   29032     SubpassDependency2KHR& setDependencyFlags( DependencyFlags dependencyFlags_ )
   29033     {
   29034       dependencyFlags = dependencyFlags_;
   29035       return *this;
   29036     }
   29037 
   29038     SubpassDependency2KHR& setViewOffset( int32_t viewOffset_ )
   29039     {
   29040       viewOffset = viewOffset_;
   29041       return *this;
   29042     }
   29043 
   29044     operator VkSubpassDependency2KHR const&() const
   29045     {
   29046       return *reinterpret_cast<const VkSubpassDependency2KHR*>(this);
   29047     }
   29048 
   29049     operator VkSubpassDependency2KHR &()
   29050     {
   29051       return *reinterpret_cast<VkSubpassDependency2KHR*>(this);
   29052     }
   29053 
   29054     bool operator==( SubpassDependency2KHR const& rhs ) const
   29055     {
   29056       return ( sType == rhs.sType )
   29057           && ( pNext == rhs.pNext )
   29058           && ( srcSubpass == rhs.srcSubpass )
   29059           && ( dstSubpass == rhs.dstSubpass )
   29060           && ( srcStageMask == rhs.srcStageMask )
   29061           && ( dstStageMask == rhs.dstStageMask )
   29062           && ( srcAccessMask == rhs.srcAccessMask )
   29063           && ( dstAccessMask == rhs.dstAccessMask )
   29064           && ( dependencyFlags == rhs.dependencyFlags )
   29065           && ( viewOffset == rhs.viewOffset );
   29066     }
   29067 
   29068     bool operator!=( SubpassDependency2KHR const& rhs ) const
   29069     {
   29070       return !operator==( rhs );
   29071     }
   29072 
   29073   private:
   29074     StructureType sType = StructureType::eSubpassDependency2KHR;
   29075 
   29076   public:
   29077     const void* pNext = nullptr;
   29078     uint32_t srcSubpass;
   29079     uint32_t dstSubpass;
   29080     PipelineStageFlags srcStageMask;
   29081     PipelineStageFlags dstStageMask;
   29082     AccessFlags srcAccessMask;
   29083     AccessFlags dstAccessMask;
   29084     DependencyFlags dependencyFlags;
   29085     int32_t viewOffset;
   29086   };
   29087   static_assert( sizeof( SubpassDependency2KHR ) == sizeof( VkSubpassDependency2KHR ), "struct and wrapper have different size!" );
   29088 
   29089   enum class PresentModeKHR
   29090   {
   29091     eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
   29092     eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
   29093     eFifo = VK_PRESENT_MODE_FIFO_KHR,
   29094     eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
   29095     eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
   29096     eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
   29097   };
   29098 
   29099   enum class ColorSpaceKHR
   29100   {
   29101     eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   29102     eVkColorspaceSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   29103     eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
   29104     eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
   29105     eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
   29106     eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
   29107     eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
   29108     eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
   29109     eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
   29110     eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
   29111     eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
   29112     eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
   29113     eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
   29114     eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
   29115     ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
   29116     eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
   29117   };
   29118 
   29119   struct SurfaceFormatKHR
   29120   {
   29121     operator VkSurfaceFormatKHR const&() const
   29122     {
   29123       return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
   29124     }
   29125 
   29126     operator VkSurfaceFormatKHR &()
   29127     {
   29128       return *reinterpret_cast<VkSurfaceFormatKHR*>(this);
   29129     }
   29130 
   29131     bool operator==( SurfaceFormatKHR const& rhs ) const
   29132     {
   29133       return ( format == rhs.format )
   29134           && ( colorSpace == rhs.colorSpace );
   29135     }
   29136 
   29137     bool operator!=( SurfaceFormatKHR const& rhs ) const
   29138     {
   29139       return !operator==( rhs );
   29140     }
   29141 
   29142     Format format;
   29143     ColorSpaceKHR colorSpace;
   29144   };
   29145   static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
   29146 
   29147   struct SurfaceFormat2KHR
   29148   {
   29149     operator VkSurfaceFormat2KHR const&() const
   29150     {
   29151       return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
   29152     }
   29153 
   29154     operator VkSurfaceFormat2KHR &()
   29155     {
   29156       return *reinterpret_cast<VkSurfaceFormat2KHR*>(this);
   29157     }
   29158 
   29159     bool operator==( SurfaceFormat2KHR const& rhs ) const
   29160     {
   29161       return ( sType == rhs.sType )
   29162           && ( pNext == rhs.pNext )
   29163           && ( surfaceFormat == rhs.surfaceFormat );
   29164     }
   29165 
   29166     bool operator!=( SurfaceFormat2KHR const& rhs ) const
   29167     {
   29168       return !operator==( rhs );
   29169     }
   29170 
   29171   private:
   29172     StructureType sType = StructureType::eSurfaceFormat2KHR;
   29173 
   29174   public:
   29175     void* pNext = nullptr;
   29176     SurfaceFormatKHR surfaceFormat;
   29177   };
   29178   static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
   29179 
   29180   enum class DisplayPlaneAlphaFlagBitsKHR
   29181   {
   29182     eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
   29183     eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
   29184     ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
   29185     ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
   29186   };
   29187 
   29188   using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
   29189 
   29190   VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
   29191   {
   29192     return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
   29193   }
   29194 
   29195   VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
   29196   {
   29197     return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
   29198   }
   29199 
   29200   template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
   29201   {
   29202     enum
   29203     {
   29204       allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
   29205     };
   29206   };
   29207 
   29208   struct DisplayPlaneCapabilitiesKHR
   29209   {
   29210     operator VkDisplayPlaneCapabilitiesKHR const&() const
   29211     {
   29212       return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
   29213     }
   29214 
   29215     operator VkDisplayPlaneCapabilitiesKHR &()
   29216     {
   29217       return *reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>(this);
   29218     }
   29219 
   29220     bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
   29221     {
   29222       return ( supportedAlpha == rhs.supportedAlpha )
   29223           && ( minSrcPosition == rhs.minSrcPosition )
   29224           && ( maxSrcPosition == rhs.maxSrcPosition )
   29225           && ( minSrcExtent == rhs.minSrcExtent )
   29226           && ( maxSrcExtent == rhs.maxSrcExtent )
   29227           && ( minDstPosition == rhs.minDstPosition )
   29228           && ( maxDstPosition == rhs.maxDstPosition )
   29229           && ( minDstExtent == rhs.minDstExtent )
   29230           && ( maxDstExtent == rhs.maxDstExtent );
   29231     }
   29232 
   29233     bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
   29234     {
   29235       return !operator==( rhs );
   29236     }
   29237 
   29238     DisplayPlaneAlphaFlagsKHR supportedAlpha;
   29239     Offset2D minSrcPosition;
   29240     Offset2D maxSrcPosition;
   29241     Extent2D minSrcExtent;
   29242     Extent2D maxSrcExtent;
   29243     Offset2D minDstPosition;
   29244     Offset2D maxDstPosition;
   29245     Extent2D minDstExtent;
   29246     Extent2D maxDstExtent;
   29247   };
   29248   static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
   29249 
   29250   struct DisplayPlaneCapabilities2KHR
   29251   {
   29252     operator VkDisplayPlaneCapabilities2KHR const&() const
   29253     {
   29254       return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR*>(this);
   29255     }
   29256 
   29257     operator VkDisplayPlaneCapabilities2KHR &()
   29258     {
   29259       return *reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>(this);
   29260     }
   29261 
   29262     bool operator==( DisplayPlaneCapabilities2KHR const& rhs ) const
   29263     {
   29264       return ( sType == rhs.sType )
   29265           && ( pNext == rhs.pNext )
   29266           && ( capabilities == rhs.capabilities );
   29267     }
   29268 
   29269     bool operator!=( DisplayPlaneCapabilities2KHR const& rhs ) const
   29270     {
   29271       return !operator==( rhs );
   29272     }
   29273 
   29274   private:
   29275     StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR;
   29276 
   29277   public:
   29278     void* pNext = nullptr;
   29279     DisplayPlaneCapabilitiesKHR capabilities;
   29280   };
   29281   static_assert( sizeof( DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), "struct and wrapper have different size!" );
   29282 
   29283   enum class CompositeAlphaFlagBitsKHR
   29284   {
   29285     eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
   29286     ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
   29287     ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
   29288     eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
   29289   };
   29290 
   29291   using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
   29292 
   29293   VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
   29294   {
   29295     return CompositeAlphaFlagsKHR( bit0 ) | bit1;
   29296   }
   29297 
   29298   VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
   29299   {
   29300     return ~( CompositeAlphaFlagsKHR( bits ) );
   29301   }
   29302 
   29303   template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
   29304   {
   29305     enum
   29306     {
   29307       allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
   29308     };
   29309   };
   29310 
   29311   enum class SurfaceTransformFlagBitsKHR
   29312   {
   29313     eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
   29314     eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
   29315     eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
   29316     eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
   29317     eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
   29318     eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
   29319     eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
   29320     eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
   29321     eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
   29322   };
   29323 
   29324   using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
   29325 
   29326   VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
   29327   {
   29328     return SurfaceTransformFlagsKHR( bit0 ) | bit1;
   29329   }
   29330 
   29331   VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
   29332   {
   29333     return ~( SurfaceTransformFlagsKHR( bits ) );
   29334   }
   29335 
   29336   template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
   29337   {
   29338     enum
   29339     {
   29340       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)
   29341     };
   29342   };
   29343 
   29344   struct DisplayPropertiesKHR
   29345   {
   29346     operator VkDisplayPropertiesKHR const&() const
   29347     {
   29348       return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
   29349     }
   29350 
   29351     operator VkDisplayPropertiesKHR &()
   29352     {
   29353       return *reinterpret_cast<VkDisplayPropertiesKHR*>(this);
   29354     }
   29355 
   29356     bool operator==( DisplayPropertiesKHR const& rhs ) const
   29357     {
   29358       return ( display == rhs.display )
   29359           && ( displayName == rhs.displayName )
   29360           && ( physicalDimensions == rhs.physicalDimensions )
   29361           && ( physicalResolution == rhs.physicalResolution )
   29362           && ( supportedTransforms == rhs.supportedTransforms )
   29363           && ( planeReorderPossible == rhs.planeReorderPossible )
   29364           && ( persistentContent == rhs.persistentContent );
   29365     }
   29366 
   29367     bool operator!=( DisplayPropertiesKHR const& rhs ) const
   29368     {
   29369       return !operator==( rhs );
   29370     }
   29371 
   29372     DisplayKHR display;
   29373     const char* displayName;
   29374     Extent2D physicalDimensions;
   29375     Extent2D physicalResolution;
   29376     SurfaceTransformFlagsKHR supportedTransforms;
   29377     Bool32 planeReorderPossible;
   29378     Bool32 persistentContent;
   29379   };
   29380   static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
   29381 
   29382   struct DisplaySurfaceCreateInfoKHR
   29383   {
   29384     DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateFlagsKHR flags_ = DisplaySurfaceCreateFlagsKHR(),
   29385                                  DisplayModeKHR displayMode_ = DisplayModeKHR(),
   29386                                  uint32_t planeIndex_ = 0,
   29387                                  uint32_t planeStackIndex_ = 0,
   29388                                  SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity,
   29389                                  float globalAlpha_ = 0,
   29390                                  DisplayPlaneAlphaFlagBitsKHR alphaMode_ = DisplayPlaneAlphaFlagBitsKHR::eOpaque,
   29391                                  Extent2D imageExtent_ = Extent2D() )
   29392       : flags( flags_ )
   29393       , displayMode( displayMode_ )
   29394       , planeIndex( planeIndex_ )
   29395       , planeStackIndex( planeStackIndex_ )
   29396       , transform( transform_ )
   29397       , globalAlpha( globalAlpha_ )
   29398       , alphaMode( alphaMode_ )
   29399       , imageExtent( imageExtent_ )
   29400     {
   29401     }
   29402 
   29403     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
   29404     {
   29405       memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
   29406     }
   29407 
   29408     DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
   29409     {
   29410       memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
   29411       return *this;
   29412     }
   29413     DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
   29414     {
   29415       pNext = pNext_;
   29416       return *this;
   29417     }
   29418 
   29419     DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
   29420     {
   29421       flags = flags_;
   29422       return *this;
   29423     }
   29424 
   29425     DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
   29426     {
   29427       displayMode = displayMode_;
   29428       return *this;
   29429     }
   29430 
   29431     DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
   29432     {
   29433       planeIndex = planeIndex_;
   29434       return *this;
   29435     }
   29436 
   29437     DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
   29438     {
   29439       planeStackIndex = planeStackIndex_;
   29440       return *this;
   29441     }
   29442 
   29443     DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
   29444     {
   29445       transform = transform_;
   29446       return *this;
   29447     }
   29448 
   29449     DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
   29450     {
   29451       globalAlpha = globalAlpha_;
   29452       return *this;
   29453     }
   29454 
   29455     DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
   29456     {
   29457       alphaMode = alphaMode_;
   29458       return *this;
   29459     }
   29460 
   29461     DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
   29462     {
   29463       imageExtent = imageExtent_;
   29464       return *this;
   29465     }
   29466 
   29467     operator VkDisplaySurfaceCreateInfoKHR const&() const
   29468     {
   29469       return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
   29470     }
   29471 
   29472     operator VkDisplaySurfaceCreateInfoKHR &()
   29473     {
   29474       return *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR*>(this);
   29475     }
   29476 
   29477     bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
   29478     {
   29479       return ( sType == rhs.sType )
   29480           && ( pNext == rhs.pNext )
   29481           && ( flags == rhs.flags )
   29482           && ( displayMode == rhs.displayMode )
   29483           && ( planeIndex == rhs.planeIndex )
   29484           && ( planeStackIndex == rhs.planeStackIndex )
   29485           && ( transform == rhs.transform )
   29486           && ( globalAlpha == rhs.globalAlpha )
   29487           && ( alphaMode == rhs.alphaMode )
   29488           && ( imageExtent == rhs.imageExtent );
   29489     }
   29490 
   29491     bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
   29492     {
   29493       return !operator==( rhs );
   29494     }
   29495 
   29496   private:
   29497     StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
   29498 
   29499   public:
   29500     const void* pNext = nullptr;
   29501     DisplaySurfaceCreateFlagsKHR flags;
   29502     DisplayModeKHR displayMode;
   29503     uint32_t planeIndex;
   29504     uint32_t planeStackIndex;
   29505     SurfaceTransformFlagBitsKHR transform;
   29506     float globalAlpha;
   29507     DisplayPlaneAlphaFlagBitsKHR alphaMode;
   29508     Extent2D imageExtent;
   29509   };
   29510   static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
   29511 
   29512   struct SurfaceCapabilitiesKHR
   29513   {
   29514     operator VkSurfaceCapabilitiesKHR const&() const
   29515     {
   29516       return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
   29517     }
   29518 
   29519     operator VkSurfaceCapabilitiesKHR &()
   29520     {
   29521       return *reinterpret_cast<VkSurfaceCapabilitiesKHR*>(this);
   29522     }
   29523 
   29524     bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
   29525     {
   29526       return ( minImageCount == rhs.minImageCount )
   29527           && ( maxImageCount == rhs.maxImageCount )
   29528           && ( currentExtent == rhs.currentExtent )
   29529           && ( minImageExtent == rhs.minImageExtent )
   29530           && ( maxImageExtent == rhs.maxImageExtent )
   29531           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
   29532           && ( supportedTransforms == rhs.supportedTransforms )
   29533           && ( currentTransform == rhs.currentTransform )
   29534           && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
   29535           && ( supportedUsageFlags == rhs.supportedUsageFlags );
   29536     }
   29537 
   29538     bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
   29539     {
   29540       return !operator==( rhs );
   29541     }
   29542 
   29543     uint32_t minImageCount;
   29544     uint32_t maxImageCount;
   29545     Extent2D currentExtent;
   29546     Extent2D minImageExtent;
   29547     Extent2D maxImageExtent;
   29548     uint32_t maxImageArrayLayers;
   29549     SurfaceTransformFlagsKHR supportedTransforms;
   29550     SurfaceTransformFlagBitsKHR currentTransform;
   29551     CompositeAlphaFlagsKHR supportedCompositeAlpha;
   29552     ImageUsageFlags supportedUsageFlags;
   29553   };
   29554   static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
   29555 
   29556   struct SurfaceCapabilities2KHR
   29557   {
   29558     operator VkSurfaceCapabilities2KHR const&() const
   29559     {
   29560       return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
   29561     }
   29562 
   29563     operator VkSurfaceCapabilities2KHR &()
   29564     {
   29565       return *reinterpret_cast<VkSurfaceCapabilities2KHR*>(this);
   29566     }
   29567 
   29568     bool operator==( SurfaceCapabilities2KHR const& rhs ) const
   29569     {
   29570       return ( sType == rhs.sType )
   29571           && ( pNext == rhs.pNext )
   29572           && ( surfaceCapabilities == rhs.surfaceCapabilities );
   29573     }
   29574 
   29575     bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
   29576     {
   29577       return !operator==( rhs );
   29578     }
   29579 
   29580   private:
   29581     StructureType sType = StructureType::eSurfaceCapabilities2KHR;
   29582 
   29583   public:
   29584     void* pNext = nullptr;
   29585     SurfaceCapabilitiesKHR surfaceCapabilities;
   29586   };
   29587   static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
   29588 
   29589   struct DisplayProperties2KHR
   29590   {
   29591     operator VkDisplayProperties2KHR const&() const
   29592     {
   29593       return *reinterpret_cast<const VkDisplayProperties2KHR*>(this);
   29594     }
   29595 
   29596     operator VkDisplayProperties2KHR &()
   29597     {
   29598       return *reinterpret_cast<VkDisplayProperties2KHR*>(this);
   29599     }
   29600 
   29601     bool operator==( DisplayProperties2KHR const& rhs ) const
   29602     {
   29603       return ( sType == rhs.sType )
   29604           && ( pNext == rhs.pNext )
   29605           && ( displayProperties == rhs.displayProperties );
   29606     }
   29607 
   29608     bool operator!=( DisplayProperties2KHR const& rhs ) const
   29609     {
   29610       return !operator==( rhs );
   29611     }
   29612 
   29613   private:
   29614     StructureType sType = StructureType::eDisplayProperties2KHR;
   29615 
   29616   public:
   29617     void* pNext = nullptr;
   29618     DisplayPropertiesKHR displayProperties;
   29619   };
   29620   static_assert( sizeof( DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), "struct and wrapper have different size!" );
   29621 
   29622   enum class TimeDomainEXT
   29623   {
   29624     eDevice = VK_TIME_DOMAIN_DEVICE_EXT,
   29625     eClockMonotonic = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT,
   29626     eClockMonotonicRaw = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT,
   29627     eQueryPerformanceCounter = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
   29628   };
   29629 
   29630   struct CalibratedTimestampInfoEXT
   29631   {
   29632     CalibratedTimestampInfoEXT( TimeDomainEXT timeDomain_ = TimeDomainEXT::eDevice )
   29633       : timeDomain( timeDomain_ )
   29634     {
   29635     }
   29636 
   29637     CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs )
   29638     {
   29639       memcpy( this, &rhs, sizeof( CalibratedTimestampInfoEXT ) );
   29640     }
   29641 
   29642     CalibratedTimestampInfoEXT& operator=( VkCalibratedTimestampInfoEXT const & rhs )
   29643     {
   29644       memcpy( this, &rhs, sizeof( CalibratedTimestampInfoEXT ) );
   29645       return *this;
   29646     }
   29647     CalibratedTimestampInfoEXT& setPNext( const void* pNext_ )
   29648     {
   29649       pNext = pNext_;
   29650       return *this;
   29651     }
   29652 
   29653     CalibratedTimestampInfoEXT& setTimeDomain( TimeDomainEXT timeDomain_ )
   29654     {
   29655       timeDomain = timeDomain_;
   29656       return *this;
   29657     }
   29658 
   29659     operator VkCalibratedTimestampInfoEXT const&() const
   29660     {
   29661       return *reinterpret_cast<const VkCalibratedTimestampInfoEXT*>(this);
   29662     }
   29663 
   29664     operator VkCalibratedTimestampInfoEXT &()
   29665     {
   29666       return *reinterpret_cast<VkCalibratedTimestampInfoEXT*>(this);
   29667     }
   29668 
   29669     bool operator==( CalibratedTimestampInfoEXT const& rhs ) const
   29670     {
   29671       return ( sType == rhs.sType )
   29672           && ( pNext == rhs.pNext )
   29673           && ( timeDomain == rhs.timeDomain );
   29674     }
   29675 
   29676     bool operator!=( CalibratedTimestampInfoEXT const& rhs ) const
   29677     {
   29678       return !operator==( rhs );
   29679     }
   29680 
   29681   private:
   29682     StructureType sType = StructureType::eCalibratedTimestampInfoEXT;
   29683 
   29684   public:
   29685     const void* pNext = nullptr;
   29686     TimeDomainEXT timeDomain;
   29687   };
   29688   static_assert( sizeof( CalibratedTimestampInfoEXT ) == sizeof( VkCalibratedTimestampInfoEXT ), "struct and wrapper have different size!" );
   29689 
   29690   enum class DebugReportFlagBitsEXT
   29691   {
   29692     eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
   29693     eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
   29694     ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
   29695     eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
   29696     eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
   29697   };
   29698 
   29699   using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
   29700 
   29701   VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
   29702   {
   29703     return DebugReportFlagsEXT( bit0 ) | bit1;
   29704   }
   29705 
   29706   VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
   29707   {
   29708     return ~( DebugReportFlagsEXT( bits ) );
   29709   }
   29710 
   29711   template <> struct FlagTraits<DebugReportFlagBitsEXT>
   29712   {
   29713     enum
   29714     {
   29715       allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
   29716     };
   29717   };
   29718 
   29719   struct DebugReportCallbackCreateInfoEXT
   29720   {
   29721     DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(),
   29722                                       PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr,
   29723                                       void* pUserData_ = nullptr )
   29724       : flags( flags_ )
   29725       , pfnCallback( pfnCallback_ )
   29726       , pUserData( pUserData_ )
   29727     {
   29728     }
   29729 
   29730     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
   29731     {
   29732       memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
   29733     }
   29734 
   29735     DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
   29736     {
   29737       memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
   29738       return *this;
   29739     }
   29740     DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
   29741     {
   29742       pNext = pNext_;
   29743       return *this;
   29744     }
   29745 
   29746     DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
   29747     {
   29748       flags = flags_;
   29749       return *this;
   29750     }
   29751 
   29752     DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
   29753     {
   29754       pfnCallback = pfnCallback_;
   29755       return *this;
   29756     }
   29757 
   29758     DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
   29759     {
   29760       pUserData = pUserData_;
   29761       return *this;
   29762     }
   29763 
   29764     operator VkDebugReportCallbackCreateInfoEXT const&() const
   29765     {
   29766       return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
   29767     }
   29768 
   29769     operator VkDebugReportCallbackCreateInfoEXT &()
   29770     {
   29771       return *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(this);
   29772     }
   29773 
   29774     bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
   29775     {
   29776       return ( sType == rhs.sType )
   29777           && ( pNext == rhs.pNext )
   29778           && ( flags == rhs.flags )
   29779           && ( pfnCallback == rhs.pfnCallback )
   29780           && ( pUserData == rhs.pUserData );
   29781     }
   29782 
   29783     bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
   29784     {
   29785       return !operator==( rhs );
   29786     }
   29787 
   29788   private:
   29789     StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT;
   29790 
   29791   public:
   29792     const void* pNext = nullptr;
   29793     DebugReportFlagsEXT flags;
   29794     PFN_vkDebugReportCallbackEXT pfnCallback;
   29795     void* pUserData;
   29796   };
   29797   static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
   29798 
   29799   enum class DebugReportObjectTypeEXT
   29800   {
   29801     eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
   29802     eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
   29803     ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
   29804     eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
   29805     eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
   29806     eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
   29807     eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
   29808     eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
   29809     eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
   29810     eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
   29811     eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
   29812     eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
   29813     eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
   29814     eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
   29815     eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
   29816     eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
   29817     ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
   29818     ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
   29819     eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
   29820     ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
   29821     eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
   29822     eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
   29823     eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
   29824     eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
   29825     eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
   29826     eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
   29827     eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
   29828     eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
   29829     eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
   29830     eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
   29831     eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
   29832     eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
   29833     eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
   29834     eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
   29835     eValidationCacheExt = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
   29836     eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
   29837     eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
   29838     eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
   29839     eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
   29840     eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
   29841     eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT
   29842   };
   29843 
   29844   struct DebugMarkerObjectNameInfoEXT
   29845   {
   29846     DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown,
   29847                                   uint64_t object_ = 0,
   29848                                   const char* pObjectName_ = nullptr )
   29849       : objectType( objectType_ )
   29850       , object( object_ )
   29851       , pObjectName( pObjectName_ )
   29852     {
   29853     }
   29854 
   29855     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
   29856     {
   29857       memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
   29858     }
   29859 
   29860     DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
   29861     {
   29862       memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
   29863       return *this;
   29864     }
   29865     DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
   29866     {
   29867       pNext = pNext_;
   29868       return *this;
   29869     }
   29870 
   29871     DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
   29872     {
   29873       objectType = objectType_;
   29874       return *this;
   29875     }
   29876 
   29877     DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
   29878     {
   29879       object = object_;
   29880       return *this;
   29881     }
   29882 
   29883     DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
   29884     {
   29885       pObjectName = pObjectName_;
   29886       return *this;
   29887     }
   29888 
   29889     operator VkDebugMarkerObjectNameInfoEXT const&() const
   29890     {
   29891       return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
   29892     }
   29893 
   29894     operator VkDebugMarkerObjectNameInfoEXT &()
   29895     {
   29896       return *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>(this);
   29897     }
   29898 
   29899     bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
   29900     {
   29901       return ( sType == rhs.sType )
   29902           && ( pNext == rhs.pNext )
   29903           && ( objectType == rhs.objectType )
   29904           && ( object == rhs.object )
   29905           && ( pObjectName == rhs.pObjectName );
   29906     }
   29907 
   29908     bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
   29909     {
   29910       return !operator==( rhs );
   29911     }
   29912 
   29913   private:
   29914     StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT;
   29915 
   29916   public:
   29917     const void* pNext = nullptr;
   29918     DebugReportObjectTypeEXT objectType;
   29919     uint64_t object;
   29920     const char* pObjectName;
   29921   };
   29922   static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
   29923 
   29924   struct DebugMarkerObjectTagInfoEXT
   29925   {
   29926     DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown,
   29927                                  uint64_t object_ = 0,
   29928                                  uint64_t tagName_ = 0,
   29929                                  size_t tagSize_ = 0,
   29930                                  const void* pTag_ = nullptr )
   29931       : objectType( objectType_ )
   29932       , object( object_ )
   29933       , tagName( tagName_ )
   29934       , tagSize( tagSize_ )
   29935       , pTag( pTag_ )
   29936     {
   29937     }
   29938 
   29939     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
   29940     {
   29941       memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
   29942     }
   29943 
   29944     DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
   29945     {
   29946       memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
   29947       return *this;
   29948     }
   29949     DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
   29950     {
   29951       pNext = pNext_;
   29952       return *this;
   29953     }
   29954 
   29955     DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
   29956     {
   29957       objectType = objectType_;
   29958       return *this;
   29959     }
   29960 
   29961     DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
   29962     {
   29963       object = object_;
   29964       return *this;
   29965     }
   29966 
   29967     DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
   29968     {
   29969       tagName = tagName_;
   29970       return *this;
   29971     }
   29972 
   29973     DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
   29974     {
   29975       tagSize = tagSize_;
   29976       return *this;
   29977     }
   29978 
   29979     DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
   29980     {
   29981       pTag = pTag_;
   29982       return *this;
   29983     }
   29984 
   29985     operator VkDebugMarkerObjectTagInfoEXT const&() const
   29986     {
   29987       return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
   29988     }
   29989 
   29990     operator VkDebugMarkerObjectTagInfoEXT &()
   29991     {
   29992       return *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>(this);
   29993     }
   29994 
   29995     bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
   29996     {
   29997       return ( sType == rhs.sType )
   29998           && ( pNext == rhs.pNext )
   29999           && ( objectType == rhs.objectType )
   30000           && ( object == rhs.object )
   30001           && ( tagName == rhs.tagName )
   30002           && ( tagSize == rhs.tagSize )
   30003           && ( pTag == rhs.pTag );
   30004     }
   30005 
   30006     bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
   30007     {
   30008       return !operator==( rhs );
   30009     }
   30010 
   30011   private:
   30012     StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT;
   30013 
   30014   public:
   30015     const void* pNext = nullptr;
   30016     DebugReportObjectTypeEXT objectType;
   30017     uint64_t object;
   30018     uint64_t tagName;
   30019     size_t tagSize;
   30020     const void* pTag;
   30021   };
   30022   static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
   30023 
   30024   enum class RasterizationOrderAMD
   30025   {
   30026     eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
   30027     eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
   30028   };
   30029 
   30030   struct PipelineRasterizationStateRasterizationOrderAMD
   30031   {
   30032     PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
   30033       : rasterizationOrder( rasterizationOrder_ )
   30034     {
   30035     }
   30036 
   30037     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
   30038     {
   30039       memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
   30040     }
   30041 
   30042     PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
   30043     {
   30044       memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
   30045       return *this;
   30046     }
   30047     PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
   30048     {
   30049       pNext = pNext_;
   30050       return *this;
   30051     }
   30052 
   30053     PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
   30054     {
   30055       rasterizationOrder = rasterizationOrder_;
   30056       return *this;
   30057     }
   30058 
   30059     operator VkPipelineRasterizationStateRasterizationOrderAMD const&() const
   30060     {
   30061       return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
   30062     }
   30063 
   30064     operator VkPipelineRasterizationStateRasterizationOrderAMD &()
   30065     {
   30066       return *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
   30067     }
   30068 
   30069     bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
   30070     {
   30071       return ( sType == rhs.sType )
   30072           && ( pNext == rhs.pNext )
   30073           && ( rasterizationOrder == rhs.rasterizationOrder );
   30074     }
   30075 
   30076     bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
   30077     {
   30078       return !operator==( rhs );
   30079     }
   30080 
   30081   private:
   30082     StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
   30083 
   30084   public:
   30085     const void* pNext = nullptr;
   30086     RasterizationOrderAMD rasterizationOrder;
   30087   };
   30088   static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
   30089 
   30090   enum class ExternalMemoryHandleTypeFlagBitsNV
   30091   {
   30092     eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
   30093     eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
   30094     eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
   30095     eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
   30096   };
   30097 
   30098   using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
   30099 
   30100   VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
   30101   {
   30102     return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
   30103   }
   30104 
   30105   VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
   30106   {
   30107     return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
   30108   }
   30109 
   30110   template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
   30111   {
   30112     enum
   30113     {
   30114       allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
   30115     };
   30116   };
   30117 
   30118   struct ExternalMemoryImageCreateInfoNV
   30119   {
   30120     ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
   30121       : handleTypes( handleTypes_ )
   30122     {
   30123     }
   30124 
   30125     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
   30126     {
   30127       memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
   30128     }
   30129 
   30130     ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
   30131     {
   30132       memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
   30133       return *this;
   30134     }
   30135     ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
   30136     {
   30137       pNext = pNext_;
   30138       return *this;
   30139     }
   30140 
   30141     ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
   30142     {
   30143       handleTypes = handleTypes_;
   30144       return *this;
   30145     }
   30146 
   30147     operator VkExternalMemoryImageCreateInfoNV const&() const
   30148     {
   30149       return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
   30150     }
   30151 
   30152     operator VkExternalMemoryImageCreateInfoNV &()
   30153     {
   30154       return *reinterpret_cast<VkExternalMemoryImageCreateInfoNV*>(this);
   30155     }
   30156 
   30157     bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
   30158     {
   30159       return ( sType == rhs.sType )
   30160           && ( pNext == rhs.pNext )
   30161           && ( handleTypes == rhs.handleTypes );
   30162     }
   30163 
   30164     bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
   30165     {
   30166       return !operator==( rhs );
   30167     }
   30168 
   30169   private:
   30170     StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV;
   30171 
   30172   public:
   30173     const void* pNext = nullptr;
   30174     ExternalMemoryHandleTypeFlagsNV handleTypes;
   30175   };
   30176   static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
   30177 
   30178   struct ExportMemoryAllocateInfoNV
   30179   {
   30180     ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
   30181       : handleTypes( handleTypes_ )
   30182     {
   30183     }
   30184 
   30185     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
   30186     {
   30187       memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
   30188     }
   30189 
   30190     ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
   30191     {
   30192       memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
   30193       return *this;
   30194     }
   30195     ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
   30196     {
   30197       pNext = pNext_;
   30198       return *this;
   30199     }
   30200 
   30201     ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
   30202     {
   30203       handleTypes = handleTypes_;
   30204       return *this;
   30205     }
   30206 
   30207     operator VkExportMemoryAllocateInfoNV const&() const
   30208     {
   30209       return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
   30210     }
   30211 
   30212     operator VkExportMemoryAllocateInfoNV &()
   30213     {
   30214       return *reinterpret_cast<VkExportMemoryAllocateInfoNV*>(this);
   30215     }
   30216 
   30217     bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
   30218     {
   30219       return ( sType == rhs.sType )
   30220           && ( pNext == rhs.pNext )
   30221           && ( handleTypes == rhs.handleTypes );
   30222     }
   30223 
   30224     bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
   30225     {
   30226       return !operator==( rhs );
   30227     }
   30228 
   30229   private:
   30230     StructureType sType = StructureType::eExportMemoryAllocateInfoNV;
   30231 
   30232   public:
   30233     const void* pNext = nullptr;
   30234     ExternalMemoryHandleTypeFlagsNV handleTypes;
   30235   };
   30236   static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
   30237 
   30238 #ifdef VK_USE_PLATFORM_WIN32_NV
   30239   struct ImportMemoryWin32HandleInfoNV
   30240   {
   30241     ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(),
   30242                                    HANDLE handle_ = 0 )
   30243       : handleType( handleType_ )
   30244       , handle( handle_ )
   30245     {
   30246     }
   30247 
   30248     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
   30249     {
   30250       memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
   30251     }
   30252 
   30253     ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
   30254     {
   30255       memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
   30256       return *this;
   30257     }
   30258     ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
   30259     {
   30260       pNext = pNext_;
   30261       return *this;
   30262     }
   30263 
   30264     ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
   30265     {
   30266       handleType = handleType_;
   30267       return *this;
   30268     }
   30269 
   30270     ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
   30271     {
   30272       handle = handle_;
   30273       return *this;
   30274     }
   30275 
   30276     operator VkImportMemoryWin32HandleInfoNV const&() const
   30277     {
   30278       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
   30279     }
   30280 
   30281     operator VkImportMemoryWin32HandleInfoNV &()
   30282     {
   30283       return *reinterpret_cast<VkImportMemoryWin32HandleInfoNV*>(this);
   30284     }
   30285 
   30286     bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
   30287     {
   30288       return ( sType == rhs.sType )
   30289           && ( pNext == rhs.pNext )
   30290           && ( handleType == rhs.handleType )
   30291           && ( handle == rhs.handle );
   30292     }
   30293 
   30294     bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
   30295     {
   30296       return !operator==( rhs );
   30297     }
   30298 
   30299   private:
   30300     StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV;
   30301 
   30302   public:
   30303     const void* pNext = nullptr;
   30304     ExternalMemoryHandleTypeFlagsNV handleType;
   30305     HANDLE handle;
   30306   };
   30307   static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
   30308 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   30309 
   30310   enum class ExternalMemoryFeatureFlagBitsNV
   30311   {
   30312     eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
   30313     eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
   30314     eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
   30315   };
   30316 
   30317   using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
   30318 
   30319   VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
   30320   {
   30321     return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
   30322   }
   30323 
   30324   VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
   30325   {
   30326     return ~( ExternalMemoryFeatureFlagsNV( bits ) );
   30327   }
   30328 
   30329   template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
   30330   {
   30331     enum
   30332     {
   30333       allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
   30334     };
   30335   };
   30336 
   30337   struct ExternalImageFormatPropertiesNV
   30338   {
   30339     operator VkExternalImageFormatPropertiesNV const&() const
   30340     {
   30341       return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
   30342     }
   30343 
   30344     operator VkExternalImageFormatPropertiesNV &()
   30345     {
   30346       return *reinterpret_cast<VkExternalImageFormatPropertiesNV*>(this);
   30347     }
   30348 
   30349     bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
   30350     {
   30351       return ( imageFormatProperties == rhs.imageFormatProperties )
   30352           && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
   30353           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
   30354           && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
   30355     }
   30356 
   30357     bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
   30358     {
   30359       return !operator==( rhs );
   30360     }
   30361 
   30362     ImageFormatProperties imageFormatProperties;
   30363     ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
   30364     ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
   30365     ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
   30366   };
   30367   static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
   30368 
   30369   enum class ValidationCheckEXT
   30370   {
   30371     eAll = VK_VALIDATION_CHECK_ALL_EXT,
   30372     eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
   30373   };
   30374 
   30375   struct ValidationFlagsEXT
   30376   {
   30377     ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0,
   30378                         const ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
   30379       : disabledValidationCheckCount( disabledValidationCheckCount_ )
   30380       , pDisabledValidationChecks( pDisabledValidationChecks_ )
   30381     {
   30382     }
   30383 
   30384     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
   30385     {
   30386       memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
   30387     }
   30388 
   30389     ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
   30390     {
   30391       memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
   30392       return *this;
   30393     }
   30394     ValidationFlagsEXT& setPNext( const void* pNext_ )
   30395     {
   30396       pNext = pNext_;
   30397       return *this;
   30398     }
   30399 
   30400     ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
   30401     {
   30402       disabledValidationCheckCount = disabledValidationCheckCount_;
   30403       return *this;
   30404     }
   30405 
   30406     ValidationFlagsEXT& setPDisabledValidationChecks( const ValidationCheckEXT* pDisabledValidationChecks_ )
   30407     {
   30408       pDisabledValidationChecks = pDisabledValidationChecks_;
   30409       return *this;
   30410     }
   30411 
   30412     operator VkValidationFlagsEXT const&() const
   30413     {
   30414       return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
   30415     }
   30416 
   30417     operator VkValidationFlagsEXT &()
   30418     {
   30419       return *reinterpret_cast<VkValidationFlagsEXT*>(this);
   30420     }
   30421 
   30422     bool operator==( ValidationFlagsEXT const& rhs ) const
   30423     {
   30424       return ( sType == rhs.sType )
   30425           && ( pNext == rhs.pNext )
   30426           && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
   30427           && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
   30428     }
   30429 
   30430     bool operator!=( ValidationFlagsEXT const& rhs ) const
   30431     {
   30432       return !operator==( rhs );
   30433     }
   30434 
   30435   private:
   30436     StructureType sType = StructureType::eValidationFlagsEXT;
   30437 
   30438   public:
   30439     const void* pNext = nullptr;
   30440     uint32_t disabledValidationCheckCount;
   30441     const ValidationCheckEXT* pDisabledValidationChecks;
   30442   };
   30443   static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
   30444 
   30445   enum class SubgroupFeatureFlagBits
   30446   {
   30447     eBasic = VK_SUBGROUP_FEATURE_BASIC_BIT,
   30448     eVote = VK_SUBGROUP_FEATURE_VOTE_BIT,
   30449     eArithmetic = VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,
   30450     eBallot = VK_SUBGROUP_FEATURE_BALLOT_BIT,
   30451     eShuffle = VK_SUBGROUP_FEATURE_SHUFFLE_BIT,
   30452     eShuffleRelative = VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,
   30453     eClustered = VK_SUBGROUP_FEATURE_CLUSTERED_BIT,
   30454     eQuad = VK_SUBGROUP_FEATURE_QUAD_BIT,
   30455     ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV
   30456   };
   30457 
   30458   using SubgroupFeatureFlags = Flags<SubgroupFeatureFlagBits, VkSubgroupFeatureFlags>;
   30459 
   30460   VULKAN_HPP_INLINE SubgroupFeatureFlags operator|( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 )
   30461   {
   30462     return SubgroupFeatureFlags( bit0 ) | bit1;
   30463   }
   30464 
   30465   VULKAN_HPP_INLINE SubgroupFeatureFlags operator~( SubgroupFeatureFlagBits bits )
   30466   {
   30467     return ~( SubgroupFeatureFlags( bits ) );
   30468   }
   30469 
   30470   template <> struct FlagTraits<SubgroupFeatureFlagBits>
   30471   {
   30472     enum
   30473     {
   30474       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)
   30475     };
   30476   };
   30477 
   30478   struct PhysicalDeviceSubgroupProperties
   30479   {
   30480     operator VkPhysicalDeviceSubgroupProperties const&() const
   30481     {
   30482       return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>(this);
   30483     }
   30484 
   30485     operator VkPhysicalDeviceSubgroupProperties &()
   30486     {
   30487       return *reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>(this);
   30488     }
   30489 
   30490     bool operator==( PhysicalDeviceSubgroupProperties const& rhs ) const
   30491     {
   30492       return ( sType == rhs.sType )
   30493           && ( pNext == rhs.pNext )
   30494           && ( subgroupSize == rhs.subgroupSize )
   30495           && ( supportedStages == rhs.supportedStages )
   30496           && ( supportedOperations == rhs.supportedOperations )
   30497           && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages );
   30498     }
   30499 
   30500     bool operator!=( PhysicalDeviceSubgroupProperties const& rhs ) const
   30501     {
   30502       return !operator==( rhs );
   30503     }
   30504 
   30505   private:
   30506     StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties;
   30507 
   30508   public:
   30509     void* pNext = nullptr;
   30510     uint32_t subgroupSize;
   30511     ShaderStageFlags supportedStages;
   30512     SubgroupFeatureFlags supportedOperations;
   30513     Bool32 quadOperationsInAllStages;
   30514   };
   30515   static_assert( sizeof( PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), "struct and wrapper have different size!" );
   30516 
   30517   enum class IndirectCommandsLayoutUsageFlagBitsNVX
   30518   {
   30519     eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
   30520     eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
   30521     eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
   30522     eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
   30523   };
   30524 
   30525   using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
   30526 
   30527   VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
   30528   {
   30529     return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
   30530   }
   30531 
   30532   VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
   30533   {
   30534     return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
   30535   }
   30536 
   30537   template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
   30538   {
   30539     enum
   30540     {
   30541       allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
   30542     };
   30543   };
   30544 
   30545   enum class ObjectEntryUsageFlagBitsNVX
   30546   {
   30547     eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
   30548     eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
   30549   };
   30550 
   30551   using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
   30552 
   30553   VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
   30554   {
   30555     return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
   30556   }
   30557 
   30558   VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
   30559   {
   30560     return ~( ObjectEntryUsageFlagsNVX( bits ) );
   30561   }
   30562 
   30563   template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
   30564   {
   30565     enum
   30566     {
   30567       allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
   30568     };
   30569   };
   30570 
   30571   enum class IndirectCommandsTokenTypeNVX
   30572   {
   30573     ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
   30574     eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
   30575     eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
   30576     eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
   30577     ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
   30578     eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
   30579     eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
   30580     eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
   30581   };
   30582 
   30583   struct IndirectCommandsTokenNVX
   30584   {
   30585     IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline,
   30586                               Buffer buffer_ = Buffer(),
   30587                               DeviceSize offset_ = 0 )
   30588       : tokenType( tokenType_ )
   30589       , buffer( buffer_ )
   30590       , offset( offset_ )
   30591     {
   30592     }
   30593 
   30594     IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
   30595     {
   30596       memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
   30597     }
   30598 
   30599     IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
   30600     {
   30601       memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
   30602       return *this;
   30603     }
   30604     IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
   30605     {
   30606       tokenType = tokenType_;
   30607       return *this;
   30608     }
   30609 
   30610     IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
   30611     {
   30612       buffer = buffer_;
   30613       return *this;
   30614     }
   30615 
   30616     IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
   30617     {
   30618       offset = offset_;
   30619       return *this;
   30620     }
   30621 
   30622     operator VkIndirectCommandsTokenNVX const&() const
   30623     {
   30624       return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
   30625     }
   30626 
   30627     operator VkIndirectCommandsTokenNVX &()
   30628     {
   30629       return *reinterpret_cast<VkIndirectCommandsTokenNVX*>(this);
   30630     }
   30631 
   30632     bool operator==( IndirectCommandsTokenNVX const& rhs ) const
   30633     {
   30634       return ( tokenType == rhs.tokenType )
   30635           && ( buffer == rhs.buffer )
   30636           && ( offset == rhs.offset );
   30637     }
   30638 
   30639     bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
   30640     {
   30641       return !operator==( rhs );
   30642     }
   30643 
   30644     IndirectCommandsTokenTypeNVX tokenType;
   30645     Buffer buffer;
   30646     DeviceSize offset;
   30647   };
   30648   static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
   30649 
   30650   struct IndirectCommandsLayoutTokenNVX
   30651   {
   30652     IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline,
   30653                                     uint32_t bindingUnit_ = 0,
   30654                                     uint32_t dynamicCount_ = 0,
   30655                                     uint32_t divisor_ = 0 )
   30656       : tokenType( tokenType_ )
   30657       , bindingUnit( bindingUnit_ )
   30658       , dynamicCount( dynamicCount_ )
   30659       , divisor( divisor_ )
   30660     {
   30661     }
   30662 
   30663     IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
   30664     {
   30665       memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
   30666     }
   30667 
   30668     IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
   30669     {
   30670       memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
   30671       return *this;
   30672     }
   30673     IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
   30674     {
   30675       tokenType = tokenType_;
   30676       return *this;
   30677     }
   30678 
   30679     IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
   30680     {
   30681       bindingUnit = bindingUnit_;
   30682       return *this;
   30683     }
   30684 
   30685     IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
   30686     {
   30687       dynamicCount = dynamicCount_;
   30688       return *this;
   30689     }
   30690 
   30691     IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
   30692     {
   30693       divisor = divisor_;
   30694       return *this;
   30695     }
   30696 
   30697     operator VkIndirectCommandsLayoutTokenNVX const&() const
   30698     {
   30699       return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
   30700     }
   30701 
   30702     operator VkIndirectCommandsLayoutTokenNVX &()
   30703     {
   30704       return *reinterpret_cast<VkIndirectCommandsLayoutTokenNVX*>(this);
   30705     }
   30706 
   30707     bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
   30708     {
   30709       return ( tokenType == rhs.tokenType )
   30710           && ( bindingUnit == rhs.bindingUnit )
   30711           && ( dynamicCount == rhs.dynamicCount )
   30712           && ( divisor == rhs.divisor );
   30713     }
   30714 
   30715     bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
   30716     {
   30717       return !operator==( rhs );
   30718     }
   30719 
   30720     IndirectCommandsTokenTypeNVX tokenType;
   30721     uint32_t bindingUnit;
   30722     uint32_t dynamicCount;
   30723     uint32_t divisor;
   30724   };
   30725   static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
   30726 
   30727   struct IndirectCommandsLayoutCreateInfoNVX
   30728   {
   30729     IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
   30730                                          IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(),
   30731                                          uint32_t tokenCount_ = 0,
   30732                                          const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
   30733       : pipelineBindPoint( pipelineBindPoint_ )
   30734       , flags( flags_ )
   30735       , tokenCount( tokenCount_ )
   30736       , pTokens( pTokens_ )
   30737     {
   30738     }
   30739 
   30740     IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
   30741     {
   30742       memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
   30743     }
   30744 
   30745     IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
   30746     {
   30747       memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
   30748       return *this;
   30749     }
   30750     IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
   30751     {
   30752       pNext = pNext_;
   30753       return *this;
   30754     }
   30755 
   30756     IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
   30757     {
   30758       pipelineBindPoint = pipelineBindPoint_;
   30759       return *this;
   30760     }
   30761 
   30762     IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
   30763     {
   30764       flags = flags_;
   30765       return *this;
   30766     }
   30767 
   30768     IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
   30769     {
   30770       tokenCount = tokenCount_;
   30771       return *this;
   30772     }
   30773 
   30774     IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
   30775     {
   30776       pTokens = pTokens_;
   30777       return *this;
   30778     }
   30779 
   30780     operator VkIndirectCommandsLayoutCreateInfoNVX const&() const
   30781     {
   30782       return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
   30783     }
   30784 
   30785     operator VkIndirectCommandsLayoutCreateInfoNVX &()
   30786     {
   30787       return *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNVX*>(this);
   30788     }
   30789 
   30790     bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
   30791     {
   30792       return ( sType == rhs.sType )
   30793           && ( pNext == rhs.pNext )
   30794           && ( pipelineBindPoint == rhs.pipelineBindPoint )
   30795           && ( flags == rhs.flags )
   30796           && ( tokenCount == rhs.tokenCount )
   30797           && ( pTokens == rhs.pTokens );
   30798     }
   30799 
   30800     bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
   30801     {
   30802       return !operator==( rhs );
   30803     }
   30804 
   30805   private:
   30806     StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNVX;
   30807 
   30808   public:
   30809     const void* pNext = nullptr;
   30810     PipelineBindPoint pipelineBindPoint;
   30811     IndirectCommandsLayoutUsageFlagsNVX flags;
   30812     uint32_t tokenCount;
   30813     const IndirectCommandsLayoutTokenNVX* pTokens;
   30814   };
   30815   static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
   30816 
   30817   enum class ObjectEntryTypeNVX
   30818   {
   30819     eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
   30820     ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
   30821     eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
   30822     eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
   30823     ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
   30824   };
   30825 
   30826   struct ObjectTableCreateInfoNVX
   30827   {
   30828     ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0,
   30829                               const ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr,
   30830                               const uint32_t* pObjectEntryCounts_ = nullptr,
   30831                               const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr,
   30832                               uint32_t maxUniformBuffersPerDescriptor_ = 0,
   30833                               uint32_t maxStorageBuffersPerDescriptor_ = 0,
   30834                               uint32_t maxStorageImagesPerDescriptor_ = 0,
   30835                               uint32_t maxSampledImagesPerDescriptor_ = 0,
   30836                               uint32_t maxPipelineLayouts_ = 0 )
   30837       : objectCount( objectCount_ )
   30838       , pObjectEntryTypes( pObjectEntryTypes_ )
   30839       , pObjectEntryCounts( pObjectEntryCounts_ )
   30840       , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
   30841       , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
   30842       , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
   30843       , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
   30844       , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
   30845       , maxPipelineLayouts( maxPipelineLayouts_ )
   30846     {
   30847     }
   30848 
   30849     ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
   30850     {
   30851       memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
   30852     }
   30853 
   30854     ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
   30855     {
   30856       memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
   30857       return *this;
   30858     }
   30859     ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
   30860     {
   30861       pNext = pNext_;
   30862       return *this;
   30863     }
   30864 
   30865     ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
   30866     {
   30867       objectCount = objectCount_;
   30868       return *this;
   30869     }
   30870 
   30871     ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
   30872     {
   30873       pObjectEntryTypes = pObjectEntryTypes_;
   30874       return *this;
   30875     }
   30876 
   30877     ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
   30878     {
   30879       pObjectEntryCounts = pObjectEntryCounts_;
   30880       return *this;
   30881     }
   30882 
   30883     ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
   30884     {
   30885       pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
   30886       return *this;
   30887     }
   30888 
   30889     ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
   30890     {
   30891       maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
   30892       return *this;
   30893     }
   30894 
   30895     ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
   30896     {
   30897       maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
   30898       return *this;
   30899     }
   30900 
   30901     ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
   30902     {
   30903       maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
   30904       return *this;
   30905     }
   30906 
   30907     ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
   30908     {
   30909       maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
   30910       return *this;
   30911     }
   30912 
   30913     ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
   30914     {
   30915       maxPipelineLayouts = maxPipelineLayouts_;
   30916       return *this;
   30917     }
   30918 
   30919     operator VkObjectTableCreateInfoNVX const&() const
   30920     {
   30921       return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
   30922     }
   30923 
   30924     operator VkObjectTableCreateInfoNVX &()
   30925     {
   30926       return *reinterpret_cast<VkObjectTableCreateInfoNVX*>(this);
   30927     }
   30928 
   30929     bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
   30930     {
   30931       return ( sType == rhs.sType )
   30932           && ( pNext == rhs.pNext )
   30933           && ( objectCount == rhs.objectCount )
   30934           && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
   30935           && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
   30936           && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
   30937           && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
   30938           && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
   30939           && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
   30940           && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
   30941           && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
   30942     }
   30943 
   30944     bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
   30945     {
   30946       return !operator==( rhs );
   30947     }
   30948 
   30949   private:
   30950     StructureType sType = StructureType::eObjectTableCreateInfoNVX;
   30951 
   30952   public:
   30953     const void* pNext = nullptr;
   30954     uint32_t objectCount;
   30955     const ObjectEntryTypeNVX* pObjectEntryTypes;
   30956     const uint32_t* pObjectEntryCounts;
   30957     const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
   30958     uint32_t maxUniformBuffersPerDescriptor;
   30959     uint32_t maxStorageBuffersPerDescriptor;
   30960     uint32_t maxStorageImagesPerDescriptor;
   30961     uint32_t maxSampledImagesPerDescriptor;
   30962     uint32_t maxPipelineLayouts;
   30963   };
   30964   static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
   30965 
   30966   struct ObjectTableEntryNVX
   30967   {
   30968     ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   30969                          ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
   30970       : type( type_ )
   30971       , flags( flags_ )
   30972     {
   30973     }
   30974 
   30975     ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
   30976     {
   30977       memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
   30978     }
   30979 
   30980     ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
   30981     {
   30982       memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
   30983       return *this;
   30984     }
   30985     ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
   30986     {
   30987       type = type_;
   30988       return *this;
   30989     }
   30990 
   30991     ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   30992     {
   30993       flags = flags_;
   30994       return *this;
   30995     }
   30996 
   30997     operator VkObjectTableEntryNVX const&() const
   30998     {
   30999       return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
   31000     }
   31001 
   31002     operator VkObjectTableEntryNVX &()
   31003     {
   31004       return *reinterpret_cast<VkObjectTableEntryNVX*>(this);
   31005     }
   31006 
   31007     bool operator==( ObjectTableEntryNVX const& rhs ) const
   31008     {
   31009       return ( type == rhs.type )
   31010           && ( flags == rhs.flags );
   31011     }
   31012 
   31013     bool operator!=( ObjectTableEntryNVX const& rhs ) const
   31014     {
   31015       return !operator==( rhs );
   31016     }
   31017 
   31018     ObjectEntryTypeNVX type;
   31019     ObjectEntryUsageFlagsNVX flags;
   31020   };
   31021   static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
   31022 
   31023   struct ObjectTablePipelineEntryNVX
   31024   {
   31025     ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   31026                                  ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
   31027                                  Pipeline pipeline_ = Pipeline() )
   31028       : type( type_ )
   31029       , flags( flags_ )
   31030       , pipeline( pipeline_ )
   31031     {
   31032     }
   31033 
   31034     explicit ObjectTablePipelineEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
   31035                                           Pipeline pipeline_ = Pipeline() )
   31036       : type( objectTableEntryNVX.type )
   31037       , flags( objectTableEntryNVX.flags )
   31038       , pipeline( pipeline_ )
   31039     {}
   31040 
   31041     ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
   31042     {
   31043       memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
   31044     }
   31045 
   31046     ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
   31047     {
   31048       memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
   31049       return *this;
   31050     }
   31051     ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
   31052     {
   31053       type = type_;
   31054       return *this;
   31055     }
   31056 
   31057     ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   31058     {
   31059       flags = flags_;
   31060       return *this;
   31061     }
   31062 
   31063     ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
   31064     {
   31065       pipeline = pipeline_;
   31066       return *this;
   31067     }
   31068 
   31069     operator VkObjectTablePipelineEntryNVX const&() const
   31070     {
   31071       return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
   31072     }
   31073 
   31074     operator VkObjectTablePipelineEntryNVX &()
   31075     {
   31076       return *reinterpret_cast<VkObjectTablePipelineEntryNVX*>(this);
   31077     }
   31078 
   31079     bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
   31080     {
   31081       return ( type == rhs.type )
   31082           && ( flags == rhs.flags )
   31083           && ( pipeline == rhs.pipeline );
   31084     }
   31085 
   31086     bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
   31087     {
   31088       return !operator==( rhs );
   31089     }
   31090 
   31091     ObjectEntryTypeNVX type;
   31092     ObjectEntryUsageFlagsNVX flags;
   31093     Pipeline pipeline;
   31094   };
   31095   static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
   31096 
   31097   struct ObjectTableDescriptorSetEntryNVX
   31098   {
   31099     ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   31100                                       ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
   31101                                       PipelineLayout pipelineLayout_ = PipelineLayout(),
   31102                                       DescriptorSet descriptorSet_ = DescriptorSet() )
   31103       : type( type_ )
   31104       , flags( flags_ )
   31105       , pipelineLayout( pipelineLayout_ )
   31106       , descriptorSet( descriptorSet_ )
   31107     {
   31108     }
   31109 
   31110     explicit ObjectTableDescriptorSetEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
   31111                                                PipelineLayout pipelineLayout_ = PipelineLayout(),
   31112                                                DescriptorSet descriptorSet_ = DescriptorSet() )
   31113       : type( objectTableEntryNVX.type )
   31114       , flags( objectTableEntryNVX.flags )
   31115       , pipelineLayout( pipelineLayout_ )
   31116       , descriptorSet( descriptorSet_ )
   31117     {}
   31118 
   31119     ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
   31120     {
   31121       memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
   31122     }
   31123 
   31124     ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
   31125     {
   31126       memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
   31127       return *this;
   31128     }
   31129     ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
   31130     {
   31131       type = type_;
   31132       return *this;
   31133     }
   31134 
   31135     ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   31136     {
   31137       flags = flags_;
   31138       return *this;
   31139     }
   31140 
   31141     ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
   31142     {
   31143       pipelineLayout = pipelineLayout_;
   31144       return *this;
   31145     }
   31146 
   31147     ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
   31148     {
   31149       descriptorSet = descriptorSet_;
   31150       return *this;
   31151     }
   31152 
   31153     operator VkObjectTableDescriptorSetEntryNVX const&() const
   31154     {
   31155       return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
   31156     }
   31157 
   31158     operator VkObjectTableDescriptorSetEntryNVX &()
   31159     {
   31160       return *reinterpret_cast<VkObjectTableDescriptorSetEntryNVX*>(this);
   31161     }
   31162 
   31163     bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
   31164     {
   31165       return ( type == rhs.type )
   31166           && ( flags == rhs.flags )
   31167           && ( pipelineLayout == rhs.pipelineLayout )
   31168           && ( descriptorSet == rhs.descriptorSet );
   31169     }
   31170 
   31171     bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
   31172     {
   31173       return !operator==( rhs );
   31174     }
   31175 
   31176     ObjectEntryTypeNVX type;
   31177     ObjectEntryUsageFlagsNVX flags;
   31178     PipelineLayout pipelineLayout;
   31179     DescriptorSet descriptorSet;
   31180   };
   31181   static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
   31182 
   31183   struct ObjectTableVertexBufferEntryNVX
   31184   {
   31185     ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   31186                                      ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
   31187                                      Buffer buffer_ = Buffer() )
   31188       : type( type_ )
   31189       , flags( flags_ )
   31190       , buffer( buffer_ )
   31191     {
   31192     }
   31193 
   31194     explicit ObjectTableVertexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
   31195                                               Buffer buffer_ = Buffer() )
   31196       : type( objectTableEntryNVX.type )
   31197       , flags( objectTableEntryNVX.flags )
   31198       , buffer( buffer_ )
   31199     {}
   31200 
   31201     ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
   31202     {
   31203       memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
   31204     }
   31205 
   31206     ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
   31207     {
   31208       memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
   31209       return *this;
   31210     }
   31211     ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
   31212     {
   31213       type = type_;
   31214       return *this;
   31215     }
   31216 
   31217     ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   31218     {
   31219       flags = flags_;
   31220       return *this;
   31221     }
   31222 
   31223     ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
   31224     {
   31225       buffer = buffer_;
   31226       return *this;
   31227     }
   31228 
   31229     operator VkObjectTableVertexBufferEntryNVX const&() const
   31230     {
   31231       return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
   31232     }
   31233 
   31234     operator VkObjectTableVertexBufferEntryNVX &()
   31235     {
   31236       return *reinterpret_cast<VkObjectTableVertexBufferEntryNVX*>(this);
   31237     }
   31238 
   31239     bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
   31240     {
   31241       return ( type == rhs.type )
   31242           && ( flags == rhs.flags )
   31243           && ( buffer == rhs.buffer );
   31244     }
   31245 
   31246     bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
   31247     {
   31248       return !operator==( rhs );
   31249     }
   31250 
   31251     ObjectEntryTypeNVX type;
   31252     ObjectEntryUsageFlagsNVX flags;
   31253     Buffer buffer;
   31254   };
   31255   static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
   31256 
   31257   struct ObjectTableIndexBufferEntryNVX
   31258   {
   31259     ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   31260                                     ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
   31261                                     Buffer buffer_ = Buffer(),
   31262                                     IndexType indexType_ = IndexType::eUint16 )
   31263       : type( type_ )
   31264       , flags( flags_ )
   31265       , buffer( buffer_ )
   31266       , indexType( indexType_ )
   31267     {
   31268     }
   31269 
   31270     explicit ObjectTableIndexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
   31271                                              Buffer buffer_ = Buffer(),
   31272                                              IndexType indexType_ = IndexType::eUint16 )
   31273       : type( objectTableEntryNVX.type )
   31274       , flags( objectTableEntryNVX.flags )
   31275       , buffer( buffer_ )
   31276       , indexType( indexType_ )
   31277     {}
   31278 
   31279     ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
   31280     {
   31281       memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
   31282     }
   31283 
   31284     ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
   31285     {
   31286       memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
   31287       return *this;
   31288     }
   31289     ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
   31290     {
   31291       type = type_;
   31292       return *this;
   31293     }
   31294 
   31295     ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   31296     {
   31297       flags = flags_;
   31298       return *this;
   31299     }
   31300 
   31301     ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
   31302     {
   31303       buffer = buffer_;
   31304       return *this;
   31305     }
   31306 
   31307     ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
   31308     {
   31309       indexType = indexType_;
   31310       return *this;
   31311     }
   31312 
   31313     operator VkObjectTableIndexBufferEntryNVX const&() const
   31314     {
   31315       return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
   31316     }
   31317 
   31318     operator VkObjectTableIndexBufferEntryNVX &()
   31319     {
   31320       return *reinterpret_cast<VkObjectTableIndexBufferEntryNVX*>(this);
   31321     }
   31322 
   31323     bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
   31324     {
   31325       return ( type == rhs.type )
   31326           && ( flags == rhs.flags )
   31327           && ( buffer == rhs.buffer )
   31328           && ( indexType == rhs.indexType );
   31329     }
   31330 
   31331     bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
   31332     {
   31333       return !operator==( rhs );
   31334     }
   31335 
   31336     ObjectEntryTypeNVX type;
   31337     ObjectEntryUsageFlagsNVX flags;
   31338     Buffer buffer;
   31339     IndexType indexType;
   31340   };
   31341   static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
   31342 
   31343   struct ObjectTablePushConstantEntryNVX
   31344   {
   31345     ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
   31346                                      ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
   31347                                      PipelineLayout pipelineLayout_ = PipelineLayout(),
   31348                                      ShaderStageFlags stageFlags_ = ShaderStageFlags() )
   31349       : type( type_ )
   31350       , flags( flags_ )
   31351       , pipelineLayout( pipelineLayout_ )
   31352       , stageFlags( stageFlags_ )
   31353     {
   31354     }
   31355 
   31356     explicit ObjectTablePushConstantEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
   31357                                               PipelineLayout pipelineLayout_ = PipelineLayout(),
   31358                                               ShaderStageFlags stageFlags_ = ShaderStageFlags() )
   31359       : type( objectTableEntryNVX.type )
   31360       , flags( objectTableEntryNVX.flags )
   31361       , pipelineLayout( pipelineLayout_ )
   31362       , stageFlags( stageFlags_ )
   31363     {}
   31364 
   31365     ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
   31366     {
   31367       memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
   31368     }
   31369 
   31370     ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
   31371     {
   31372       memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
   31373       return *this;
   31374     }
   31375     ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
   31376     {
   31377       type = type_;
   31378       return *this;
   31379     }
   31380 
   31381     ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
   31382     {
   31383       flags = flags_;
   31384       return *this;
   31385     }
   31386 
   31387     ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
   31388     {
   31389       pipelineLayout = pipelineLayout_;
   31390       return *this;
   31391     }
   31392 
   31393     ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
   31394     {
   31395       stageFlags = stageFlags_;
   31396       return *this;
   31397     }
   31398 
   31399     operator VkObjectTablePushConstantEntryNVX const&() const
   31400     {
   31401       return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
   31402     }
   31403 
   31404     operator VkObjectTablePushConstantEntryNVX &()
   31405     {
   31406       return *reinterpret_cast<VkObjectTablePushConstantEntryNVX*>(this);
   31407     }
   31408 
   31409     bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
   31410     {
   31411       return ( type == rhs.type )
   31412           && ( flags == rhs.flags )
   31413           && ( pipelineLayout == rhs.pipelineLayout )
   31414           && ( stageFlags == rhs.stageFlags );
   31415     }
   31416 
   31417     bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
   31418     {
   31419       return !operator==( rhs );
   31420     }
   31421 
   31422     ObjectEntryTypeNVX type;
   31423     ObjectEntryUsageFlagsNVX flags;
   31424     PipelineLayout pipelineLayout;
   31425     ShaderStageFlags stageFlags;
   31426   };
   31427   static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
   31428 
   31429   enum class DescriptorSetLayoutCreateFlagBits
   31430   {
   31431     ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,
   31432     eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
   31433   };
   31434 
   31435   using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
   31436 
   31437   VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
   31438   {
   31439     return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
   31440   }
   31441 
   31442   VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
   31443   {
   31444     return ~( DescriptorSetLayoutCreateFlags( bits ) );
   31445   }
   31446 
   31447   template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
   31448   {
   31449     enum
   31450     {
   31451       allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) | VkFlags(DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT)
   31452     };
   31453   };
   31454 
   31455   struct DescriptorSetLayoutCreateInfo
   31456   {
   31457     DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(),
   31458                                    uint32_t bindingCount_ = 0,
   31459                                    const DescriptorSetLayoutBinding* pBindings_ = nullptr )
   31460       : flags( flags_ )
   31461       , bindingCount( bindingCount_ )
   31462       , pBindings( pBindings_ )
   31463     {
   31464     }
   31465 
   31466     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
   31467     {
   31468       memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
   31469     }
   31470 
   31471     DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
   31472     {
   31473       memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
   31474       return *this;
   31475     }
   31476     DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
   31477     {
   31478       pNext = pNext_;
   31479       return *this;
   31480     }
   31481 
   31482     DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
   31483     {
   31484       flags = flags_;
   31485       return *this;
   31486     }
   31487 
   31488     DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
   31489     {
   31490       bindingCount = bindingCount_;
   31491       return *this;
   31492     }
   31493 
   31494     DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
   31495     {
   31496       pBindings = pBindings_;
   31497       return *this;
   31498     }
   31499 
   31500     operator VkDescriptorSetLayoutCreateInfo const&() const
   31501     {
   31502       return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
   31503     }
   31504 
   31505     operator VkDescriptorSetLayoutCreateInfo &()
   31506     {
   31507       return *reinterpret_cast<VkDescriptorSetLayoutCreateInfo*>(this);
   31508     }
   31509 
   31510     bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
   31511     {
   31512       return ( sType == rhs.sType )
   31513           && ( pNext == rhs.pNext )
   31514           && ( flags == rhs.flags )
   31515           && ( bindingCount == rhs.bindingCount )
   31516           && ( pBindings == rhs.pBindings );
   31517     }
   31518 
   31519     bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
   31520     {
   31521       return !operator==( rhs );
   31522     }
   31523 
   31524   private:
   31525     StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
   31526 
   31527   public:
   31528     const void* pNext = nullptr;
   31529     DescriptorSetLayoutCreateFlags flags;
   31530     uint32_t bindingCount;
   31531     const DescriptorSetLayoutBinding* pBindings;
   31532   };
   31533   static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
   31534 
   31535   enum class ExternalMemoryHandleTypeFlagBits
   31536   {
   31537     eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
   31538     eOpaqueFdKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
   31539     eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   31540     eOpaqueWin32KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   31541     eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   31542     eOpaqueWin32KmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   31543     eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
   31544     eD3D11TextureKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
   31545     eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
   31546     eD3D11TextureKmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
   31547     eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
   31548     eD3D12HeapKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
   31549     eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
   31550     eD3D12ResourceKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
   31551     eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
   31552     eAndroidHardwareBufferANDROID = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
   31553     eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,
   31554     eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
   31555   };
   31556 
   31557   using ExternalMemoryHandleTypeFlags = Flags<ExternalMemoryHandleTypeFlagBits, VkExternalMemoryHandleTypeFlags>;
   31558 
   31559   VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator|( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 )
   31560   {
   31561     return ExternalMemoryHandleTypeFlags( bit0 ) | bit1;
   31562   }
   31563 
   31564   VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator~( ExternalMemoryHandleTypeFlagBits bits )
   31565   {
   31566     return ~( ExternalMemoryHandleTypeFlags( bits ) );
   31567   }
   31568 
   31569   template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBits>
   31570   {
   31571     enum
   31572     {
   31573       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)
   31574     };
   31575   };
   31576 
   31577   using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags;
   31578 
   31579   struct PhysicalDeviceExternalImageFormatInfo
   31580   {
   31581     PhysicalDeviceExternalImageFormatInfo( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
   31582       : handleType( handleType_ )
   31583     {
   31584     }
   31585 
   31586     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
   31587     {
   31588       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
   31589     }
   31590 
   31591     PhysicalDeviceExternalImageFormatInfo& operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
   31592     {
   31593       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
   31594       return *this;
   31595     }
   31596     PhysicalDeviceExternalImageFormatInfo& setPNext( const void* pNext_ )
   31597     {
   31598       pNext = pNext_;
   31599       return *this;
   31600     }
   31601 
   31602     PhysicalDeviceExternalImageFormatInfo& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   31603     {
   31604       handleType = handleType_;
   31605       return *this;
   31606     }
   31607 
   31608     operator VkPhysicalDeviceExternalImageFormatInfo const&() const
   31609     {
   31610       return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(this);
   31611     }
   31612 
   31613     operator VkPhysicalDeviceExternalImageFormatInfo &()
   31614     {
   31615       return *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(this);
   31616     }
   31617 
   31618     bool operator==( PhysicalDeviceExternalImageFormatInfo const& rhs ) const
   31619     {
   31620       return ( sType == rhs.sType )
   31621           && ( pNext == rhs.pNext )
   31622           && ( handleType == rhs.handleType );
   31623     }
   31624 
   31625     bool operator!=( PhysicalDeviceExternalImageFormatInfo const& rhs ) const
   31626     {
   31627       return !operator==( rhs );
   31628     }
   31629 
   31630   private:
   31631     StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
   31632 
   31633   public:
   31634     const void* pNext = nullptr;
   31635     ExternalMemoryHandleTypeFlagBits handleType;
   31636   };
   31637   static_assert( sizeof( PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), "struct and wrapper have different size!" );
   31638 
   31639   using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
   31640 
   31641   struct PhysicalDeviceExternalBufferInfo
   31642   {
   31643     PhysicalDeviceExternalBufferInfo( BufferCreateFlags flags_ = BufferCreateFlags(),
   31644                                       BufferUsageFlags usage_ = BufferUsageFlags(),
   31645                                       ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
   31646       : flags( flags_ )
   31647       , usage( usage_ )
   31648       , handleType( handleType_ )
   31649     {
   31650     }
   31651 
   31652     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs )
   31653     {
   31654       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
   31655     }
   31656 
   31657     PhysicalDeviceExternalBufferInfo& operator=( VkPhysicalDeviceExternalBufferInfo const & rhs )
   31658     {
   31659       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
   31660       return *this;
   31661     }
   31662     PhysicalDeviceExternalBufferInfo& setPNext( const void* pNext_ )
   31663     {
   31664       pNext = pNext_;
   31665       return *this;
   31666     }
   31667 
   31668     PhysicalDeviceExternalBufferInfo& setFlags( BufferCreateFlags flags_ )
   31669     {
   31670       flags = flags_;
   31671       return *this;
   31672     }
   31673 
   31674     PhysicalDeviceExternalBufferInfo& setUsage( BufferUsageFlags usage_ )
   31675     {
   31676       usage = usage_;
   31677       return *this;
   31678     }
   31679 
   31680     PhysicalDeviceExternalBufferInfo& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   31681     {
   31682       handleType = handleType_;
   31683       return *this;
   31684     }
   31685 
   31686     operator VkPhysicalDeviceExternalBufferInfo const&() const
   31687     {
   31688       return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>(this);
   31689     }
   31690 
   31691     operator VkPhysicalDeviceExternalBufferInfo &()
   31692     {
   31693       return *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo*>(this);
   31694     }
   31695 
   31696     bool operator==( PhysicalDeviceExternalBufferInfo const& rhs ) const
   31697     {
   31698       return ( sType == rhs.sType )
   31699           && ( pNext == rhs.pNext )
   31700           && ( flags == rhs.flags )
   31701           && ( usage == rhs.usage )
   31702           && ( handleType == rhs.handleType );
   31703     }
   31704 
   31705     bool operator!=( PhysicalDeviceExternalBufferInfo const& rhs ) const
   31706     {
   31707       return !operator==( rhs );
   31708     }
   31709 
   31710   private:
   31711     StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo;
   31712 
   31713   public:
   31714     const void* pNext = nullptr;
   31715     BufferCreateFlags flags;
   31716     BufferUsageFlags usage;
   31717     ExternalMemoryHandleTypeFlagBits handleType;
   31718   };
   31719   static_assert( sizeof( PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), "struct and wrapper have different size!" );
   31720 
   31721   using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
   31722 
   31723   struct ExternalMemoryImageCreateInfo
   31724   {
   31725     ExternalMemoryImageCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
   31726       : handleTypes( handleTypes_ )
   31727     {
   31728     }
   31729 
   31730     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs )
   31731     {
   31732       memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
   31733     }
   31734 
   31735     ExternalMemoryImageCreateInfo& operator=( VkExternalMemoryImageCreateInfo const & rhs )
   31736     {
   31737       memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
   31738       return *this;
   31739     }
   31740     ExternalMemoryImageCreateInfo& setPNext( const void* pNext_ )
   31741     {
   31742       pNext = pNext_;
   31743       return *this;
   31744     }
   31745 
   31746     ExternalMemoryImageCreateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
   31747     {
   31748       handleTypes = handleTypes_;
   31749       return *this;
   31750     }
   31751 
   31752     operator VkExternalMemoryImageCreateInfo const&() const
   31753     {
   31754       return *reinterpret_cast<const VkExternalMemoryImageCreateInfo*>(this);
   31755     }
   31756 
   31757     operator VkExternalMemoryImageCreateInfo &()
   31758     {
   31759       return *reinterpret_cast<VkExternalMemoryImageCreateInfo*>(this);
   31760     }
   31761 
   31762     bool operator==( ExternalMemoryImageCreateInfo const& rhs ) const
   31763     {
   31764       return ( sType == rhs.sType )
   31765           && ( pNext == rhs.pNext )
   31766           && ( handleTypes == rhs.handleTypes );
   31767     }
   31768 
   31769     bool operator!=( ExternalMemoryImageCreateInfo const& rhs ) const
   31770     {
   31771       return !operator==( rhs );
   31772     }
   31773 
   31774   private:
   31775     StructureType sType = StructureType::eExternalMemoryImageCreateInfo;
   31776 
   31777   public:
   31778     const void* pNext = nullptr;
   31779     ExternalMemoryHandleTypeFlags handleTypes;
   31780   };
   31781   static_assert( sizeof( ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), "struct and wrapper have different size!" );
   31782 
   31783   using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
   31784 
   31785   struct ExternalMemoryBufferCreateInfo
   31786   {
   31787     ExternalMemoryBufferCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
   31788       : handleTypes( handleTypes_ )
   31789     {
   31790     }
   31791 
   31792     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs )
   31793     {
   31794       memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
   31795     }
   31796 
   31797     ExternalMemoryBufferCreateInfo& operator=( VkExternalMemoryBufferCreateInfo const & rhs )
   31798     {
   31799       memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
   31800       return *this;
   31801     }
   31802     ExternalMemoryBufferCreateInfo& setPNext( const void* pNext_ )
   31803     {
   31804       pNext = pNext_;
   31805       return *this;
   31806     }
   31807 
   31808     ExternalMemoryBufferCreateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
   31809     {
   31810       handleTypes = handleTypes_;
   31811       return *this;
   31812     }
   31813 
   31814     operator VkExternalMemoryBufferCreateInfo const&() const
   31815     {
   31816       return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>(this);
   31817     }
   31818 
   31819     operator VkExternalMemoryBufferCreateInfo &()
   31820     {
   31821       return *reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(this);
   31822     }
   31823 
   31824     bool operator==( ExternalMemoryBufferCreateInfo const& rhs ) const
   31825     {
   31826       return ( sType == rhs.sType )
   31827           && ( pNext == rhs.pNext )
   31828           && ( handleTypes == rhs.handleTypes );
   31829     }
   31830 
   31831     bool operator!=( ExternalMemoryBufferCreateInfo const& rhs ) const
   31832     {
   31833       return !operator==( rhs );
   31834     }
   31835 
   31836   private:
   31837     StructureType sType = StructureType::eExternalMemoryBufferCreateInfo;
   31838 
   31839   public:
   31840     const void* pNext = nullptr;
   31841     ExternalMemoryHandleTypeFlags handleTypes;
   31842   };
   31843   static_assert( sizeof( ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), "struct and wrapper have different size!" );
   31844 
   31845   using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
   31846 
   31847   struct ExportMemoryAllocateInfo
   31848   {
   31849     ExportMemoryAllocateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
   31850       : handleTypes( handleTypes_ )
   31851     {
   31852     }
   31853 
   31854     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs )
   31855     {
   31856       memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
   31857     }
   31858 
   31859     ExportMemoryAllocateInfo& operator=( VkExportMemoryAllocateInfo const & rhs )
   31860     {
   31861       memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
   31862       return *this;
   31863     }
   31864     ExportMemoryAllocateInfo& setPNext( const void* pNext_ )
   31865     {
   31866       pNext = pNext_;
   31867       return *this;
   31868     }
   31869 
   31870     ExportMemoryAllocateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
   31871     {
   31872       handleTypes = handleTypes_;
   31873       return *this;
   31874     }
   31875 
   31876     operator VkExportMemoryAllocateInfo const&() const
   31877     {
   31878       return *reinterpret_cast<const VkExportMemoryAllocateInfo*>(this);
   31879     }
   31880 
   31881     operator VkExportMemoryAllocateInfo &()
   31882     {
   31883       return *reinterpret_cast<VkExportMemoryAllocateInfo*>(this);
   31884     }
   31885 
   31886     bool operator==( ExportMemoryAllocateInfo const& rhs ) const
   31887     {
   31888       return ( sType == rhs.sType )
   31889           && ( pNext == rhs.pNext )
   31890           && ( handleTypes == rhs.handleTypes );
   31891     }
   31892 
   31893     bool operator!=( ExportMemoryAllocateInfo const& rhs ) const
   31894     {
   31895       return !operator==( rhs );
   31896     }
   31897 
   31898   private:
   31899     StructureType sType = StructureType::eExportMemoryAllocateInfo;
   31900 
   31901   public:
   31902     const void* pNext = nullptr;
   31903     ExternalMemoryHandleTypeFlags handleTypes;
   31904   };
   31905   static_assert( sizeof( ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), "struct and wrapper have different size!" );
   31906 
   31907   using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
   31908 
   31909 #ifdef VK_USE_PLATFORM_WIN32_KHR
   31910   struct ImportMemoryWin32HandleInfoKHR
   31911   {
   31912     ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
   31913                                     HANDLE handle_ = 0,
   31914                                     LPCWSTR name_ = 0 )
   31915       : handleType( handleType_ )
   31916       , handle( handle_ )
   31917       , name( name_ )
   31918     {
   31919     }
   31920 
   31921     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
   31922     {
   31923       memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
   31924     }
   31925 
   31926     ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
   31927     {
   31928       memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
   31929       return *this;
   31930     }
   31931     ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
   31932     {
   31933       pNext = pNext_;
   31934       return *this;
   31935     }
   31936 
   31937     ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   31938     {
   31939       handleType = handleType_;
   31940       return *this;
   31941     }
   31942 
   31943     ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
   31944     {
   31945       handle = handle_;
   31946       return *this;
   31947     }
   31948 
   31949     ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
   31950     {
   31951       name = name_;
   31952       return *this;
   31953     }
   31954 
   31955     operator VkImportMemoryWin32HandleInfoKHR const&() const
   31956     {
   31957       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
   31958     }
   31959 
   31960     operator VkImportMemoryWin32HandleInfoKHR &()
   31961     {
   31962       return *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR*>(this);
   31963     }
   31964 
   31965     bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
   31966     {
   31967       return ( sType == rhs.sType )
   31968           && ( pNext == rhs.pNext )
   31969           && ( handleType == rhs.handleType )
   31970           && ( handle == rhs.handle )
   31971           && ( name == rhs.name );
   31972     }
   31973 
   31974     bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
   31975     {
   31976       return !operator==( rhs );
   31977     }
   31978 
   31979   private:
   31980     StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR;
   31981 
   31982   public:
   31983     const void* pNext = nullptr;
   31984     ExternalMemoryHandleTypeFlagBits handleType;
   31985     HANDLE handle;
   31986     LPCWSTR name;
   31987   };
   31988   static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   31989 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   31990 
   31991 #ifdef VK_USE_PLATFORM_WIN32_KHR
   31992   struct MemoryGetWin32HandleInfoKHR
   31993   {
   31994     MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(),
   31995                                  ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
   31996       : memory( memory_ )
   31997       , handleType( handleType_ )
   31998     {
   31999     }
   32000 
   32001     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
   32002     {
   32003       memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
   32004     }
   32005 
   32006     MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
   32007     {
   32008       memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
   32009       return *this;
   32010     }
   32011     MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
   32012     {
   32013       pNext = pNext_;
   32014       return *this;
   32015     }
   32016 
   32017     MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
   32018     {
   32019       memory = memory_;
   32020       return *this;
   32021     }
   32022 
   32023     MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   32024     {
   32025       handleType = handleType_;
   32026       return *this;
   32027     }
   32028 
   32029     operator VkMemoryGetWin32HandleInfoKHR const&() const
   32030     {
   32031       return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
   32032     }
   32033 
   32034     operator VkMemoryGetWin32HandleInfoKHR &()
   32035     {
   32036       return *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR*>(this);
   32037     }
   32038 
   32039     bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
   32040     {
   32041       return ( sType == rhs.sType )
   32042           && ( pNext == rhs.pNext )
   32043           && ( memory == rhs.memory )
   32044           && ( handleType == rhs.handleType );
   32045     }
   32046 
   32047     bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
   32048     {
   32049       return !operator==( rhs );
   32050     }
   32051 
   32052   private:
   32053     StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR;
   32054 
   32055   public:
   32056     const void* pNext = nullptr;
   32057     DeviceMemory memory;
   32058     ExternalMemoryHandleTypeFlagBits handleType;
   32059   };
   32060   static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   32061 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   32062 
   32063   struct ImportMemoryFdInfoKHR
   32064   {
   32065     ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
   32066                            int fd_ = 0 )
   32067       : handleType( handleType_ )
   32068       , fd( fd_ )
   32069     {
   32070     }
   32071 
   32072     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
   32073     {
   32074       memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
   32075     }
   32076 
   32077     ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
   32078     {
   32079       memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
   32080       return *this;
   32081     }
   32082     ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
   32083     {
   32084       pNext = pNext_;
   32085       return *this;
   32086     }
   32087 
   32088     ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   32089     {
   32090       handleType = handleType_;
   32091       return *this;
   32092     }
   32093 
   32094     ImportMemoryFdInfoKHR& setFd( int fd_ )
   32095     {
   32096       fd = fd_;
   32097       return *this;
   32098     }
   32099 
   32100     operator VkImportMemoryFdInfoKHR const&() const
   32101     {
   32102       return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
   32103     }
   32104 
   32105     operator VkImportMemoryFdInfoKHR &()
   32106     {
   32107       return *reinterpret_cast<VkImportMemoryFdInfoKHR*>(this);
   32108     }
   32109 
   32110     bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
   32111     {
   32112       return ( sType == rhs.sType )
   32113           && ( pNext == rhs.pNext )
   32114           && ( handleType == rhs.handleType )
   32115           && ( fd == rhs.fd );
   32116     }
   32117 
   32118     bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
   32119     {
   32120       return !operator==( rhs );
   32121     }
   32122 
   32123   private:
   32124     StructureType sType = StructureType::eImportMemoryFdInfoKHR;
   32125 
   32126   public:
   32127     const void* pNext = nullptr;
   32128     ExternalMemoryHandleTypeFlagBits handleType;
   32129     int fd;
   32130   };
   32131   static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
   32132 
   32133   struct MemoryGetFdInfoKHR
   32134   {
   32135     MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(),
   32136                         ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
   32137       : memory( memory_ )
   32138       , handleType( handleType_ )
   32139     {
   32140     }
   32141 
   32142     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
   32143     {
   32144       memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
   32145     }
   32146 
   32147     MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
   32148     {
   32149       memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
   32150       return *this;
   32151     }
   32152     MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
   32153     {
   32154       pNext = pNext_;
   32155       return *this;
   32156     }
   32157 
   32158     MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
   32159     {
   32160       memory = memory_;
   32161       return *this;
   32162     }
   32163 
   32164     MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   32165     {
   32166       handleType = handleType_;
   32167       return *this;
   32168     }
   32169 
   32170     operator VkMemoryGetFdInfoKHR const&() const
   32171     {
   32172       return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
   32173     }
   32174 
   32175     operator VkMemoryGetFdInfoKHR &()
   32176     {
   32177       return *reinterpret_cast<VkMemoryGetFdInfoKHR*>(this);
   32178     }
   32179 
   32180     bool operator==( MemoryGetFdInfoKHR const& rhs ) const
   32181     {
   32182       return ( sType == rhs.sType )
   32183           && ( pNext == rhs.pNext )
   32184           && ( memory == rhs.memory )
   32185           && ( handleType == rhs.handleType );
   32186     }
   32187 
   32188     bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
   32189     {
   32190       return !operator==( rhs );
   32191     }
   32192 
   32193   private:
   32194     StructureType sType = StructureType::eMemoryGetFdInfoKHR;
   32195 
   32196   public:
   32197     const void* pNext = nullptr;
   32198     DeviceMemory memory;
   32199     ExternalMemoryHandleTypeFlagBits handleType;
   32200   };
   32201   static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
   32202 
   32203   struct ImportMemoryHostPointerInfoEXT
   32204   {
   32205     ImportMemoryHostPointerInfoEXT( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
   32206                                     void* pHostPointer_ = nullptr )
   32207       : handleType( handleType_ )
   32208       , pHostPointer( pHostPointer_ )
   32209     {
   32210     }
   32211 
   32212     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs )
   32213     {
   32214       memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
   32215     }
   32216 
   32217     ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs )
   32218     {
   32219       memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
   32220       return *this;
   32221     }
   32222     ImportMemoryHostPointerInfoEXT& setPNext( const void* pNext_ )
   32223     {
   32224       pNext = pNext_;
   32225       return *this;
   32226     }
   32227 
   32228     ImportMemoryHostPointerInfoEXT& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
   32229     {
   32230       handleType = handleType_;
   32231       return *this;
   32232     }
   32233 
   32234     ImportMemoryHostPointerInfoEXT& setPHostPointer( void* pHostPointer_ )
   32235     {
   32236       pHostPointer = pHostPointer_;
   32237       return *this;
   32238     }
   32239 
   32240     operator VkImportMemoryHostPointerInfoEXT const&() const
   32241     {
   32242       return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(this);
   32243     }
   32244 
   32245     operator VkImportMemoryHostPointerInfoEXT &()
   32246     {
   32247       return *reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(this);
   32248     }
   32249 
   32250     bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const
   32251     {
   32252       return ( sType == rhs.sType )
   32253           && ( pNext == rhs.pNext )
   32254           && ( handleType == rhs.handleType )
   32255           && ( pHostPointer == rhs.pHostPointer );
   32256     }
   32257 
   32258     bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const
   32259     {
   32260       return !operator==( rhs );
   32261     }
   32262 
   32263   private:
   32264     StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
   32265 
   32266   public:
   32267     const void* pNext = nullptr;
   32268     ExternalMemoryHandleTypeFlagBits handleType;
   32269     void* pHostPointer;
   32270   };
   32271   static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" );
   32272 
   32273   enum class ExternalMemoryFeatureFlagBits
   32274   {
   32275     eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
   32276     eDedicatedOnlyKHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
   32277     eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
   32278     eExportableKHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
   32279     eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
   32280     eImportableKHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
   32281   };
   32282 
   32283   using ExternalMemoryFeatureFlags = Flags<ExternalMemoryFeatureFlagBits, VkExternalMemoryFeatureFlags>;
   32284 
   32285   VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator|( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 )
   32286   {
   32287     return ExternalMemoryFeatureFlags( bit0 ) | bit1;
   32288   }
   32289 
   32290   VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator~( ExternalMemoryFeatureFlagBits bits )
   32291   {
   32292     return ~( ExternalMemoryFeatureFlags( bits ) );
   32293   }
   32294 
   32295   template <> struct FlagTraits<ExternalMemoryFeatureFlagBits>
   32296   {
   32297     enum
   32298     {
   32299       allFlags = VkFlags(ExternalMemoryFeatureFlagBits::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBits::eExportable) | VkFlags(ExternalMemoryFeatureFlagBits::eImportable)
   32300     };
   32301   };
   32302 
   32303   using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags;
   32304 
   32305   struct ExternalMemoryProperties
   32306   {
   32307     operator VkExternalMemoryProperties const&() const
   32308     {
   32309       return *reinterpret_cast<const VkExternalMemoryProperties*>(this);
   32310     }
   32311 
   32312     operator VkExternalMemoryProperties &()
   32313     {
   32314       return *reinterpret_cast<VkExternalMemoryProperties*>(this);
   32315     }
   32316 
   32317     bool operator==( ExternalMemoryProperties const& rhs ) const
   32318     {
   32319       return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
   32320           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
   32321           && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
   32322     }
   32323 
   32324     bool operator!=( ExternalMemoryProperties const& rhs ) const
   32325     {
   32326       return !operator==( rhs );
   32327     }
   32328 
   32329     ExternalMemoryFeatureFlags externalMemoryFeatures;
   32330     ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
   32331     ExternalMemoryHandleTypeFlags compatibleHandleTypes;
   32332   };
   32333   static_assert( sizeof( ExternalMemoryProperties ) == sizeof( VkExternalMemoryProperties ), "struct and wrapper have different size!" );
   32334 
   32335   using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
   32336 
   32337   struct ExternalImageFormatProperties
   32338   {
   32339     operator VkExternalImageFormatProperties const&() const
   32340     {
   32341       return *reinterpret_cast<const VkExternalImageFormatProperties*>(this);
   32342     }
   32343 
   32344     operator VkExternalImageFormatProperties &()
   32345     {
   32346       return *reinterpret_cast<VkExternalImageFormatProperties*>(this);
   32347     }
   32348 
   32349     bool operator==( ExternalImageFormatProperties const& rhs ) const
   32350     {
   32351       return ( sType == rhs.sType )
   32352           && ( pNext == rhs.pNext )
   32353           && ( externalMemoryProperties == rhs.externalMemoryProperties );
   32354     }
   32355 
   32356     bool operator!=( ExternalImageFormatProperties const& rhs ) const
   32357     {
   32358       return !operator==( rhs );
   32359     }
   32360 
   32361   private:
   32362     StructureType sType = StructureType::eExternalImageFormatProperties;
   32363 
   32364   public:
   32365     void* pNext = nullptr;
   32366     ExternalMemoryProperties externalMemoryProperties;
   32367   };
   32368   static_assert( sizeof( ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), "struct and wrapper have different size!" );
   32369 
   32370   using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
   32371 
   32372   struct ExternalBufferProperties
   32373   {
   32374     operator VkExternalBufferProperties const&() const
   32375     {
   32376       return *reinterpret_cast<const VkExternalBufferProperties*>(this);
   32377     }
   32378 
   32379     operator VkExternalBufferProperties &()
   32380     {
   32381       return *reinterpret_cast<VkExternalBufferProperties*>(this);
   32382     }
   32383 
   32384     bool operator==( ExternalBufferProperties const& rhs ) const
   32385     {
   32386       return ( sType == rhs.sType )
   32387           && ( pNext == rhs.pNext )
   32388           && ( externalMemoryProperties == rhs.externalMemoryProperties );
   32389     }
   32390 
   32391     bool operator!=( ExternalBufferProperties const& rhs ) const
   32392     {
   32393       return !operator==( rhs );
   32394     }
   32395 
   32396   private:
   32397     StructureType sType = StructureType::eExternalBufferProperties;
   32398 
   32399   public:
   32400     void* pNext = nullptr;
   32401     ExternalMemoryProperties externalMemoryProperties;
   32402   };
   32403   static_assert( sizeof( ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), "struct and wrapper have different size!" );
   32404 
   32405   using ExternalBufferPropertiesKHR = ExternalBufferProperties;
   32406 
   32407   enum class ExternalSemaphoreHandleTypeFlagBits
   32408   {
   32409     eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
   32410     eOpaqueFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
   32411     eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   32412     eOpaqueWin32KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   32413     eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   32414     eOpaqueWin32KmtKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   32415     eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
   32416     eD3D12FenceKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
   32417     eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
   32418     eSyncFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
   32419   };
   32420 
   32421   using ExternalSemaphoreHandleTypeFlags = Flags<ExternalSemaphoreHandleTypeFlagBits, VkExternalSemaphoreHandleTypeFlags>;
   32422 
   32423   VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator|( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 )
   32424   {
   32425     return ExternalSemaphoreHandleTypeFlags( bit0 ) | bit1;
   32426   }
   32427 
   32428   VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator~( ExternalSemaphoreHandleTypeFlagBits bits )
   32429   {
   32430     return ~( ExternalSemaphoreHandleTypeFlags( bits ) );
   32431   }
   32432 
   32433   template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBits>
   32434   {
   32435     enum
   32436     {
   32437       allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eSyncFd)
   32438     };
   32439   };
   32440 
   32441   using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags;
   32442 
   32443   struct PhysicalDeviceExternalSemaphoreInfo
   32444   {
   32445     PhysicalDeviceExternalSemaphoreInfo( ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
   32446       : handleType( handleType_ )
   32447     {
   32448     }
   32449 
   32450     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
   32451     {
   32452       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
   32453     }
   32454 
   32455     PhysicalDeviceExternalSemaphoreInfo& operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
   32456     {
   32457       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
   32458       return *this;
   32459     }
   32460     PhysicalDeviceExternalSemaphoreInfo& setPNext( const void* pNext_ )
   32461     {
   32462       pNext = pNext_;
   32463       return *this;
   32464     }
   32465 
   32466     PhysicalDeviceExternalSemaphoreInfo& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
   32467     {
   32468       handleType = handleType_;
   32469       return *this;
   32470     }
   32471 
   32472     operator VkPhysicalDeviceExternalSemaphoreInfo const&() const
   32473     {
   32474       return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>(this);
   32475     }
   32476 
   32477     operator VkPhysicalDeviceExternalSemaphoreInfo &()
   32478     {
   32479       return *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo*>(this);
   32480     }
   32481 
   32482     bool operator==( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const
   32483     {
   32484       return ( sType == rhs.sType )
   32485           && ( pNext == rhs.pNext )
   32486           && ( handleType == rhs.handleType );
   32487     }
   32488 
   32489     bool operator!=( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const
   32490     {
   32491       return !operator==( rhs );
   32492     }
   32493 
   32494   private:
   32495     StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
   32496 
   32497   public:
   32498     const void* pNext = nullptr;
   32499     ExternalSemaphoreHandleTypeFlagBits handleType;
   32500   };
   32501   static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), "struct and wrapper have different size!" );
   32502 
   32503   using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
   32504 
   32505   struct ExportSemaphoreCreateInfo
   32506   {
   32507     ExportSemaphoreCreateInfo( ExternalSemaphoreHandleTypeFlags handleTypes_ = ExternalSemaphoreHandleTypeFlags() )
   32508       : handleTypes( handleTypes_ )
   32509     {
   32510     }
   32511 
   32512     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs )
   32513     {
   32514       memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
   32515     }
   32516 
   32517     ExportSemaphoreCreateInfo& operator=( VkExportSemaphoreCreateInfo const & rhs )
   32518     {
   32519       memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
   32520       return *this;
   32521     }
   32522     ExportSemaphoreCreateInfo& setPNext( const void* pNext_ )
   32523     {
   32524       pNext = pNext_;
   32525       return *this;
   32526     }
   32527 
   32528     ExportSemaphoreCreateInfo& setHandleTypes( ExternalSemaphoreHandleTypeFlags handleTypes_ )
   32529     {
   32530       handleTypes = handleTypes_;
   32531       return *this;
   32532     }
   32533 
   32534     operator VkExportSemaphoreCreateInfo const&() const
   32535     {
   32536       return *reinterpret_cast<const VkExportSemaphoreCreateInfo*>(this);
   32537     }
   32538 
   32539     operator VkExportSemaphoreCreateInfo &()
   32540     {
   32541       return *reinterpret_cast<VkExportSemaphoreCreateInfo*>(this);
   32542     }
   32543 
   32544     bool operator==( ExportSemaphoreCreateInfo const& rhs ) const
   32545     {
   32546       return ( sType == rhs.sType )
   32547           && ( pNext == rhs.pNext )
   32548           && ( handleTypes == rhs.handleTypes );
   32549     }
   32550 
   32551     bool operator!=( ExportSemaphoreCreateInfo const& rhs ) const
   32552     {
   32553       return !operator==( rhs );
   32554     }
   32555 
   32556   private:
   32557     StructureType sType = StructureType::eExportSemaphoreCreateInfo;
   32558 
   32559   public:
   32560     const void* pNext = nullptr;
   32561     ExternalSemaphoreHandleTypeFlags handleTypes;
   32562   };
   32563   static_assert( sizeof( ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), "struct and wrapper have different size!" );
   32564 
   32565   using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
   32566 
   32567 #ifdef VK_USE_PLATFORM_WIN32_KHR
   32568   struct SemaphoreGetWin32HandleInfoKHR
   32569   {
   32570     SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(),
   32571                                     ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
   32572       : semaphore( semaphore_ )
   32573       , handleType( handleType_ )
   32574     {
   32575     }
   32576 
   32577     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
   32578     {
   32579       memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
   32580     }
   32581 
   32582     SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
   32583     {
   32584       memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
   32585       return *this;
   32586     }
   32587     SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
   32588     {
   32589       pNext = pNext_;
   32590       return *this;
   32591     }
   32592 
   32593     SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
   32594     {
   32595       semaphore = semaphore_;
   32596       return *this;
   32597     }
   32598 
   32599     SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
   32600     {
   32601       handleType = handleType_;
   32602       return *this;
   32603     }
   32604 
   32605     operator VkSemaphoreGetWin32HandleInfoKHR const&() const
   32606     {
   32607       return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
   32608     }
   32609 
   32610     operator VkSemaphoreGetWin32HandleInfoKHR &()
   32611     {
   32612       return *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR*>(this);
   32613     }
   32614 
   32615     bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
   32616     {
   32617       return ( sType == rhs.sType )
   32618           && ( pNext == rhs.pNext )
   32619           && ( semaphore == rhs.semaphore )
   32620           && ( handleType == rhs.handleType );
   32621     }
   32622 
   32623     bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
   32624     {
   32625       return !operator==( rhs );
   32626     }
   32627 
   32628   private:
   32629     StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
   32630 
   32631   public:
   32632     const void* pNext = nullptr;
   32633     Semaphore semaphore;
   32634     ExternalSemaphoreHandleTypeFlagBits handleType;
   32635   };
   32636   static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   32637 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   32638 
   32639   struct SemaphoreGetFdInfoKHR
   32640   {
   32641     SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(),
   32642                            ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
   32643       : semaphore( semaphore_ )
   32644       , handleType( handleType_ )
   32645     {
   32646     }
   32647 
   32648     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
   32649     {
   32650       memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
   32651     }
   32652 
   32653     SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
   32654     {
   32655       memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
   32656       return *this;
   32657     }
   32658     SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
   32659     {
   32660       pNext = pNext_;
   32661       return *this;
   32662     }
   32663 
   32664     SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
   32665     {
   32666       semaphore = semaphore_;
   32667       return *this;
   32668     }
   32669 
   32670     SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
   32671     {
   32672       handleType = handleType_;
   32673       return *this;
   32674     }
   32675 
   32676     operator VkSemaphoreGetFdInfoKHR const&() const
   32677     {
   32678       return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
   32679     }
   32680 
   32681     operator VkSemaphoreGetFdInfoKHR &()
   32682     {
   32683       return *reinterpret_cast<VkSemaphoreGetFdInfoKHR*>(this);
   32684     }
   32685 
   32686     bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
   32687     {
   32688       return ( sType == rhs.sType )
   32689           && ( pNext == rhs.pNext )
   32690           && ( semaphore == rhs.semaphore )
   32691           && ( handleType == rhs.handleType );
   32692     }
   32693 
   32694     bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
   32695     {
   32696       return !operator==( rhs );
   32697     }
   32698 
   32699   private:
   32700     StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
   32701 
   32702   public:
   32703     const void* pNext = nullptr;
   32704     Semaphore semaphore;
   32705     ExternalSemaphoreHandleTypeFlagBits handleType;
   32706   };
   32707   static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
   32708 
   32709   enum class ExternalSemaphoreFeatureFlagBits
   32710   {
   32711     eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
   32712     eExportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
   32713     eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
   32714     eImportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
   32715   };
   32716 
   32717   using ExternalSemaphoreFeatureFlags = Flags<ExternalSemaphoreFeatureFlagBits, VkExternalSemaphoreFeatureFlags>;
   32718 
   32719   VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator|( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 )
   32720   {
   32721     return ExternalSemaphoreFeatureFlags( bit0 ) | bit1;
   32722   }
   32723 
   32724   VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator~( ExternalSemaphoreFeatureFlagBits bits )
   32725   {
   32726     return ~( ExternalSemaphoreFeatureFlags( bits ) );
   32727   }
   32728 
   32729   template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBits>
   32730   {
   32731     enum
   32732     {
   32733       allFlags = VkFlags(ExternalSemaphoreFeatureFlagBits::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBits::eImportable)
   32734     };
   32735   };
   32736 
   32737   using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags;
   32738 
   32739   struct ExternalSemaphoreProperties
   32740   {
   32741     operator VkExternalSemaphoreProperties const&() const
   32742     {
   32743       return *reinterpret_cast<const VkExternalSemaphoreProperties*>(this);
   32744     }
   32745 
   32746     operator VkExternalSemaphoreProperties &()
   32747     {
   32748       return *reinterpret_cast<VkExternalSemaphoreProperties*>(this);
   32749     }
   32750 
   32751     bool operator==( ExternalSemaphoreProperties const& rhs ) const
   32752     {
   32753       return ( sType == rhs.sType )
   32754           && ( pNext == rhs.pNext )
   32755           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
   32756           && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
   32757           && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
   32758     }
   32759 
   32760     bool operator!=( ExternalSemaphoreProperties const& rhs ) const
   32761     {
   32762       return !operator==( rhs );
   32763     }
   32764 
   32765   private:
   32766     StructureType sType = StructureType::eExternalSemaphoreProperties;
   32767 
   32768   public:
   32769     void* pNext = nullptr;
   32770     ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
   32771     ExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
   32772     ExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
   32773   };
   32774   static_assert( sizeof( ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), "struct and wrapper have different size!" );
   32775 
   32776   using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
   32777 
   32778   enum class SemaphoreImportFlagBits
   32779   {
   32780     eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
   32781     eTemporaryKHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
   32782   };
   32783 
   32784   using SemaphoreImportFlags = Flags<SemaphoreImportFlagBits, VkSemaphoreImportFlags>;
   32785 
   32786   VULKAN_HPP_INLINE SemaphoreImportFlags operator|( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 )
   32787   {
   32788     return SemaphoreImportFlags( bit0 ) | bit1;
   32789   }
   32790 
   32791   VULKAN_HPP_INLINE SemaphoreImportFlags operator~( SemaphoreImportFlagBits bits )
   32792   {
   32793     return ~( SemaphoreImportFlags( bits ) );
   32794   }
   32795 
   32796   template <> struct FlagTraits<SemaphoreImportFlagBits>
   32797   {
   32798     enum
   32799     {
   32800       allFlags = VkFlags(SemaphoreImportFlagBits::eTemporary)
   32801     };
   32802   };
   32803 
   32804   using SemaphoreImportFlagsKHR = SemaphoreImportFlags;
   32805 
   32806 #ifdef VK_USE_PLATFORM_WIN32_KHR
   32807   struct ImportSemaphoreWin32HandleInfoKHR
   32808   {
   32809     ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(),
   32810                                        SemaphoreImportFlags flags_ = SemaphoreImportFlags(),
   32811                                        ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
   32812                                        HANDLE handle_ = 0,
   32813                                        LPCWSTR name_ = 0 )
   32814       : semaphore( semaphore_ )
   32815       , flags( flags_ )
   32816       , handleType( handleType_ )
   32817       , handle( handle_ )
   32818       , name( name_ )
   32819     {
   32820     }
   32821 
   32822     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
   32823     {
   32824       memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
   32825     }
   32826 
   32827     ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
   32828     {
   32829       memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
   32830       return *this;
   32831     }
   32832     ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
   32833     {
   32834       pNext = pNext_;
   32835       return *this;
   32836     }
   32837 
   32838     ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
   32839     {
   32840       semaphore = semaphore_;
   32841       return *this;
   32842     }
   32843 
   32844     ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlags flags_ )
   32845     {
   32846       flags = flags_;
   32847       return *this;
   32848     }
   32849 
   32850     ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
   32851     {
   32852       handleType = handleType_;
   32853       return *this;
   32854     }
   32855 
   32856     ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
   32857     {
   32858       handle = handle_;
   32859       return *this;
   32860     }
   32861 
   32862     ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
   32863     {
   32864       name = name_;
   32865       return *this;
   32866     }
   32867 
   32868     operator VkImportSemaphoreWin32HandleInfoKHR const&() const
   32869     {
   32870       return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
   32871     }
   32872 
   32873     operator VkImportSemaphoreWin32HandleInfoKHR &()
   32874     {
   32875       return *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR*>(this);
   32876     }
   32877 
   32878     bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
   32879     {
   32880       return ( sType == rhs.sType )
   32881           && ( pNext == rhs.pNext )
   32882           && ( semaphore == rhs.semaphore )
   32883           && ( flags == rhs.flags )
   32884           && ( handleType == rhs.handleType )
   32885           && ( handle == rhs.handle )
   32886           && ( name == rhs.name );
   32887     }
   32888 
   32889     bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
   32890     {
   32891       return !operator==( rhs );
   32892     }
   32893 
   32894   private:
   32895     StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
   32896 
   32897   public:
   32898     const void* pNext = nullptr;
   32899     Semaphore semaphore;
   32900     SemaphoreImportFlags flags;
   32901     ExternalSemaphoreHandleTypeFlagBits handleType;
   32902     HANDLE handle;
   32903     LPCWSTR name;
   32904   };
   32905   static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   32906 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   32907 
   32908   struct ImportSemaphoreFdInfoKHR
   32909   {
   32910     ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(),
   32911                               SemaphoreImportFlags flags_ = SemaphoreImportFlags(),
   32912                               ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
   32913                               int fd_ = 0 )
   32914       : semaphore( semaphore_ )
   32915       , flags( flags_ )
   32916       , handleType( handleType_ )
   32917       , fd( fd_ )
   32918     {
   32919     }
   32920 
   32921     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
   32922     {
   32923       memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
   32924     }
   32925 
   32926     ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
   32927     {
   32928       memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
   32929       return *this;
   32930     }
   32931     ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
   32932     {
   32933       pNext = pNext_;
   32934       return *this;
   32935     }
   32936 
   32937     ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
   32938     {
   32939       semaphore = semaphore_;
   32940       return *this;
   32941     }
   32942 
   32943     ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlags flags_ )
   32944     {
   32945       flags = flags_;
   32946       return *this;
   32947     }
   32948 
   32949     ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
   32950     {
   32951       handleType = handleType_;
   32952       return *this;
   32953     }
   32954 
   32955     ImportSemaphoreFdInfoKHR& setFd( int fd_ )
   32956     {
   32957       fd = fd_;
   32958       return *this;
   32959     }
   32960 
   32961     operator VkImportSemaphoreFdInfoKHR const&() const
   32962     {
   32963       return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
   32964     }
   32965 
   32966     operator VkImportSemaphoreFdInfoKHR &()
   32967     {
   32968       return *reinterpret_cast<VkImportSemaphoreFdInfoKHR*>(this);
   32969     }
   32970 
   32971     bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
   32972     {
   32973       return ( sType == rhs.sType )
   32974           && ( pNext == rhs.pNext )
   32975           && ( semaphore == rhs.semaphore )
   32976           && ( flags == rhs.flags )
   32977           && ( handleType == rhs.handleType )
   32978           && ( fd == rhs.fd );
   32979     }
   32980 
   32981     bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
   32982     {
   32983       return !operator==( rhs );
   32984     }
   32985 
   32986   private:
   32987     StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
   32988 
   32989   public:
   32990     const void* pNext = nullptr;
   32991     Semaphore semaphore;
   32992     SemaphoreImportFlags flags;
   32993     ExternalSemaphoreHandleTypeFlagBits handleType;
   32994     int fd;
   32995   };
   32996   static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
   32997 
   32998   enum class ExternalFenceHandleTypeFlagBits
   32999   {
   33000     eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
   33001     eOpaqueFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
   33002     eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   33003     eOpaqueWin32KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   33004     eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   33005     eOpaqueWin32KmtKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   33006     eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
   33007     eSyncFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
   33008   };
   33009 
   33010   using ExternalFenceHandleTypeFlags = Flags<ExternalFenceHandleTypeFlagBits, VkExternalFenceHandleTypeFlags>;
   33011 
   33012   VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator|( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 )
   33013   {
   33014     return ExternalFenceHandleTypeFlags( bit0 ) | bit1;
   33015   }
   33016 
   33017   VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator~( ExternalFenceHandleTypeFlagBits bits )
   33018   {
   33019     return ~( ExternalFenceHandleTypeFlags( bits ) );
   33020   }
   33021 
   33022   template <> struct FlagTraits<ExternalFenceHandleTypeFlagBits>
   33023   {
   33024     enum
   33025     {
   33026       allFlags = VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBits::eSyncFd)
   33027     };
   33028   };
   33029 
   33030   using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags;
   33031 
   33032   struct PhysicalDeviceExternalFenceInfo
   33033   {
   33034     PhysicalDeviceExternalFenceInfo( ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
   33035       : handleType( handleType_ )
   33036     {
   33037     }
   33038 
   33039     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs )
   33040     {
   33041       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
   33042     }
   33043 
   33044     PhysicalDeviceExternalFenceInfo& operator=( VkPhysicalDeviceExternalFenceInfo const & rhs )
   33045     {
   33046       memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
   33047       return *this;
   33048     }
   33049     PhysicalDeviceExternalFenceInfo& setPNext( const void* pNext_ )
   33050     {
   33051       pNext = pNext_;
   33052       return *this;
   33053     }
   33054 
   33055     PhysicalDeviceExternalFenceInfo& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
   33056     {
   33057       handleType = handleType_;
   33058       return *this;
   33059     }
   33060 
   33061     operator VkPhysicalDeviceExternalFenceInfo const&() const
   33062     {
   33063       return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>(this);
   33064     }
   33065 
   33066     operator VkPhysicalDeviceExternalFenceInfo &()
   33067     {
   33068       return *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo*>(this);
   33069     }
   33070 
   33071     bool operator==( PhysicalDeviceExternalFenceInfo const& rhs ) const
   33072     {
   33073       return ( sType == rhs.sType )
   33074           && ( pNext == rhs.pNext )
   33075           && ( handleType == rhs.handleType );
   33076     }
   33077 
   33078     bool operator!=( PhysicalDeviceExternalFenceInfo const& rhs ) const
   33079     {
   33080       return !operator==( rhs );
   33081     }
   33082 
   33083   private:
   33084     StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo;
   33085 
   33086   public:
   33087     const void* pNext = nullptr;
   33088     ExternalFenceHandleTypeFlagBits handleType;
   33089   };
   33090   static_assert( sizeof( PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), "struct and wrapper have different size!" );
   33091 
   33092   using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
   33093 
   33094   struct ExportFenceCreateInfo
   33095   {
   33096     ExportFenceCreateInfo( ExternalFenceHandleTypeFlags handleTypes_ = ExternalFenceHandleTypeFlags() )
   33097       : handleTypes( handleTypes_ )
   33098     {
   33099     }
   33100 
   33101     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs )
   33102     {
   33103       memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
   33104     }
   33105 
   33106     ExportFenceCreateInfo& operator=( VkExportFenceCreateInfo const & rhs )
   33107     {
   33108       memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
   33109       return *this;
   33110     }
   33111     ExportFenceCreateInfo& setPNext( const void* pNext_ )
   33112     {
   33113       pNext = pNext_;
   33114       return *this;
   33115     }
   33116 
   33117     ExportFenceCreateInfo& setHandleTypes( ExternalFenceHandleTypeFlags handleTypes_ )
   33118     {
   33119       handleTypes = handleTypes_;
   33120       return *this;
   33121     }
   33122 
   33123     operator VkExportFenceCreateInfo const&() const
   33124     {
   33125       return *reinterpret_cast<const VkExportFenceCreateInfo*>(this);
   33126     }
   33127 
   33128     operator VkExportFenceCreateInfo &()
   33129     {
   33130       return *reinterpret_cast<VkExportFenceCreateInfo*>(this);
   33131     }
   33132 
   33133     bool operator==( ExportFenceCreateInfo const& rhs ) const
   33134     {
   33135       return ( sType == rhs.sType )
   33136           && ( pNext == rhs.pNext )
   33137           && ( handleTypes == rhs.handleTypes );
   33138     }
   33139 
   33140     bool operator!=( ExportFenceCreateInfo const& rhs ) const
   33141     {
   33142       return !operator==( rhs );
   33143     }
   33144 
   33145   private:
   33146     StructureType sType = StructureType::eExportFenceCreateInfo;
   33147 
   33148   public:
   33149     const void* pNext = nullptr;
   33150     ExternalFenceHandleTypeFlags handleTypes;
   33151   };
   33152   static_assert( sizeof( ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), "struct and wrapper have different size!" );
   33153 
   33154   using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
   33155 
   33156 #ifdef VK_USE_PLATFORM_WIN32_KHR
   33157   struct FenceGetWin32HandleInfoKHR
   33158   {
   33159     FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(),
   33160                                 ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
   33161       : fence( fence_ )
   33162       , handleType( handleType_ )
   33163     {
   33164     }
   33165 
   33166     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
   33167     {
   33168       memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
   33169     }
   33170 
   33171     FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
   33172     {
   33173       memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
   33174       return *this;
   33175     }
   33176     FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
   33177     {
   33178       pNext = pNext_;
   33179       return *this;
   33180     }
   33181 
   33182     FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
   33183     {
   33184       fence = fence_;
   33185       return *this;
   33186     }
   33187 
   33188     FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
   33189     {
   33190       handleType = handleType_;
   33191       return *this;
   33192     }
   33193 
   33194     operator VkFenceGetWin32HandleInfoKHR const&() const
   33195     {
   33196       return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
   33197     }
   33198 
   33199     operator VkFenceGetWin32HandleInfoKHR &()
   33200     {
   33201       return *reinterpret_cast<VkFenceGetWin32HandleInfoKHR*>(this);
   33202     }
   33203 
   33204     bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
   33205     {
   33206       return ( sType == rhs.sType )
   33207           && ( pNext == rhs.pNext )
   33208           && ( fence == rhs.fence )
   33209           && ( handleType == rhs.handleType );
   33210     }
   33211 
   33212     bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
   33213     {
   33214       return !operator==( rhs );
   33215     }
   33216 
   33217   private:
   33218     StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR;
   33219 
   33220   public:
   33221     const void* pNext = nullptr;
   33222     Fence fence;
   33223     ExternalFenceHandleTypeFlagBits handleType;
   33224   };
   33225   static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   33226 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   33227 
   33228   struct FenceGetFdInfoKHR
   33229   {
   33230     FenceGetFdInfoKHR( Fence fence_ = Fence(),
   33231                        ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
   33232       : fence( fence_ )
   33233       , handleType( handleType_ )
   33234     {
   33235     }
   33236 
   33237     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
   33238     {
   33239       memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
   33240     }
   33241 
   33242     FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
   33243     {
   33244       memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
   33245       return *this;
   33246     }
   33247     FenceGetFdInfoKHR& setPNext( const void* pNext_ )
   33248     {
   33249       pNext = pNext_;
   33250       return *this;
   33251     }
   33252 
   33253     FenceGetFdInfoKHR& setFence( Fence fence_ )
   33254     {
   33255       fence = fence_;
   33256       return *this;
   33257     }
   33258 
   33259     FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
   33260     {
   33261       handleType = handleType_;
   33262       return *this;
   33263     }
   33264 
   33265     operator VkFenceGetFdInfoKHR const&() const
   33266     {
   33267       return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
   33268     }
   33269 
   33270     operator VkFenceGetFdInfoKHR &()
   33271     {
   33272       return *reinterpret_cast<VkFenceGetFdInfoKHR*>(this);
   33273     }
   33274 
   33275     bool operator==( FenceGetFdInfoKHR const& rhs ) const
   33276     {
   33277       return ( sType == rhs.sType )
   33278           && ( pNext == rhs.pNext )
   33279           && ( fence == rhs.fence )
   33280           && ( handleType == rhs.handleType );
   33281     }
   33282 
   33283     bool operator!=( FenceGetFdInfoKHR const& rhs ) const
   33284     {
   33285       return !operator==( rhs );
   33286     }
   33287 
   33288   private:
   33289     StructureType sType = StructureType::eFenceGetFdInfoKHR;
   33290 
   33291   public:
   33292     const void* pNext = nullptr;
   33293     Fence fence;
   33294     ExternalFenceHandleTypeFlagBits handleType;
   33295   };
   33296   static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
   33297 
   33298   enum class ExternalFenceFeatureFlagBits
   33299   {
   33300     eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
   33301     eExportableKHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
   33302     eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
   33303     eImportableKHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
   33304   };
   33305 
   33306   using ExternalFenceFeatureFlags = Flags<ExternalFenceFeatureFlagBits, VkExternalFenceFeatureFlags>;
   33307 
   33308   VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator|( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 )
   33309   {
   33310     return ExternalFenceFeatureFlags( bit0 ) | bit1;
   33311   }
   33312 
   33313   VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator~( ExternalFenceFeatureFlagBits bits )
   33314   {
   33315     return ~( ExternalFenceFeatureFlags( bits ) );
   33316   }
   33317 
   33318   template <> struct FlagTraits<ExternalFenceFeatureFlagBits>
   33319   {
   33320     enum
   33321     {
   33322       allFlags = VkFlags(ExternalFenceFeatureFlagBits::eExportable) | VkFlags(ExternalFenceFeatureFlagBits::eImportable)
   33323     };
   33324   };
   33325 
   33326   using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags;
   33327 
   33328   struct ExternalFenceProperties
   33329   {
   33330     operator VkExternalFenceProperties const&() const
   33331     {
   33332       return *reinterpret_cast<const VkExternalFenceProperties*>(this);
   33333     }
   33334 
   33335     operator VkExternalFenceProperties &()
   33336     {
   33337       return *reinterpret_cast<VkExternalFenceProperties*>(this);
   33338     }
   33339 
   33340     bool operator==( ExternalFenceProperties const& rhs ) const
   33341     {
   33342       return ( sType == rhs.sType )
   33343           && ( pNext == rhs.pNext )
   33344           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
   33345           && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
   33346           && ( externalFenceFeatures == rhs.externalFenceFeatures );
   33347     }
   33348 
   33349     bool operator!=( ExternalFenceProperties const& rhs ) const
   33350     {
   33351       return !operator==( rhs );
   33352     }
   33353 
   33354   private:
   33355     StructureType sType = StructureType::eExternalFenceProperties;
   33356 
   33357   public:
   33358     void* pNext = nullptr;
   33359     ExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
   33360     ExternalFenceHandleTypeFlags compatibleHandleTypes;
   33361     ExternalFenceFeatureFlags externalFenceFeatures;
   33362   };
   33363   static_assert( sizeof( ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), "struct and wrapper have different size!" );
   33364 
   33365   using ExternalFencePropertiesKHR = ExternalFenceProperties;
   33366 
   33367   enum class FenceImportFlagBits
   33368   {
   33369     eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT,
   33370     eTemporaryKHR = VK_FENCE_IMPORT_TEMPORARY_BIT
   33371   };
   33372 
   33373   using FenceImportFlags = Flags<FenceImportFlagBits, VkFenceImportFlags>;
   33374 
   33375   VULKAN_HPP_INLINE FenceImportFlags operator|( FenceImportFlagBits bit0, FenceImportFlagBits bit1 )
   33376   {
   33377     return FenceImportFlags( bit0 ) | bit1;
   33378   }
   33379 
   33380   VULKAN_HPP_INLINE FenceImportFlags operator~( FenceImportFlagBits bits )
   33381   {
   33382     return ~( FenceImportFlags( bits ) );
   33383   }
   33384 
   33385   template <> struct FlagTraits<FenceImportFlagBits>
   33386   {
   33387     enum
   33388     {
   33389       allFlags = VkFlags(FenceImportFlagBits::eTemporary)
   33390     };
   33391   };
   33392 
   33393   using FenceImportFlagsKHR = FenceImportFlags;
   33394 
   33395 #ifdef VK_USE_PLATFORM_WIN32_KHR
   33396   struct ImportFenceWin32HandleInfoKHR
   33397   {
   33398     ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(),
   33399                                    FenceImportFlags flags_ = FenceImportFlags(),
   33400                                    ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd,
   33401                                    HANDLE handle_ = 0,
   33402                                    LPCWSTR name_ = 0 )
   33403       : fence( fence_ )
   33404       , flags( flags_ )
   33405       , handleType( handleType_ )
   33406       , handle( handle_ )
   33407       , name( name_ )
   33408     {
   33409     }
   33410 
   33411     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
   33412     {
   33413       memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
   33414     }
   33415 
   33416     ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
   33417     {
   33418       memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
   33419       return *this;
   33420     }
   33421     ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
   33422     {
   33423       pNext = pNext_;
   33424       return *this;
   33425     }
   33426 
   33427     ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
   33428     {
   33429       fence = fence_;
   33430       return *this;
   33431     }
   33432 
   33433     ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlags flags_ )
   33434     {
   33435       flags = flags_;
   33436       return *this;
   33437     }
   33438 
   33439     ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
   33440     {
   33441       handleType = handleType_;
   33442       return *this;
   33443     }
   33444 
   33445     ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
   33446     {
   33447       handle = handle_;
   33448       return *this;
   33449     }
   33450 
   33451     ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
   33452     {
   33453       name = name_;
   33454       return *this;
   33455     }
   33456 
   33457     operator VkImportFenceWin32HandleInfoKHR const&() const
   33458     {
   33459       return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
   33460     }
   33461 
   33462     operator VkImportFenceWin32HandleInfoKHR &()
   33463     {
   33464       return *reinterpret_cast<VkImportFenceWin32HandleInfoKHR*>(this);
   33465     }
   33466 
   33467     bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
   33468     {
   33469       return ( sType == rhs.sType )
   33470           && ( pNext == rhs.pNext )
   33471           && ( fence == rhs.fence )
   33472           && ( flags == rhs.flags )
   33473           && ( handleType == rhs.handleType )
   33474           && ( handle == rhs.handle )
   33475           && ( name == rhs.name );
   33476     }
   33477 
   33478     bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
   33479     {
   33480       return !operator==( rhs );
   33481     }
   33482 
   33483   private:
   33484     StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR;
   33485 
   33486   public:
   33487     const void* pNext = nullptr;
   33488     Fence fence;
   33489     FenceImportFlags flags;
   33490     ExternalFenceHandleTypeFlagBits handleType;
   33491     HANDLE handle;
   33492     LPCWSTR name;
   33493   };
   33494   static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
   33495 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   33496 
   33497   struct ImportFenceFdInfoKHR
   33498   {
   33499     ImportFenceFdInfoKHR( Fence fence_ = Fence(),
   33500                           FenceImportFlags flags_ = FenceImportFlags(),
   33501                           ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd,
   33502                           int fd_ = 0 )
   33503       : fence( fence_ )
   33504       , flags( flags_ )
   33505       , handleType( handleType_ )
   33506       , fd( fd_ )
   33507     {
   33508     }
   33509 
   33510     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
   33511     {
   33512       memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
   33513     }
   33514 
   33515     ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
   33516     {
   33517       memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
   33518       return *this;
   33519     }
   33520     ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
   33521     {
   33522       pNext = pNext_;
   33523       return *this;
   33524     }
   33525 
   33526     ImportFenceFdInfoKHR& setFence( Fence fence_ )
   33527     {
   33528       fence = fence_;
   33529       return *this;
   33530     }
   33531 
   33532     ImportFenceFdInfoKHR& setFlags( FenceImportFlags flags_ )
   33533     {
   33534       flags = flags_;
   33535       return *this;
   33536     }
   33537 
   33538     ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
   33539     {
   33540       handleType = handleType_;
   33541       return *this;
   33542     }
   33543 
   33544     ImportFenceFdInfoKHR& setFd( int fd_ )
   33545     {
   33546       fd = fd_;
   33547       return *this;
   33548     }
   33549 
   33550     operator VkImportFenceFdInfoKHR const&() const
   33551     {
   33552       return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
   33553     }
   33554 
   33555     operator VkImportFenceFdInfoKHR &()
   33556     {
   33557       return *reinterpret_cast<VkImportFenceFdInfoKHR*>(this);
   33558     }
   33559 
   33560     bool operator==( ImportFenceFdInfoKHR const& rhs ) const
   33561     {
   33562       return ( sType == rhs.sType )
   33563           && ( pNext == rhs.pNext )
   33564           && ( fence == rhs.fence )
   33565           && ( flags == rhs.flags )
   33566           && ( handleType == rhs.handleType )
   33567           && ( fd == rhs.fd );
   33568     }
   33569 
   33570     bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
   33571     {
   33572       return !operator==( rhs );
   33573     }
   33574 
   33575   private:
   33576     StructureType sType = StructureType::eImportFenceFdInfoKHR;
   33577 
   33578   public:
   33579     const void* pNext = nullptr;
   33580     Fence fence;
   33581     FenceImportFlags flags;
   33582     ExternalFenceHandleTypeFlagBits handleType;
   33583     int fd;
   33584   };
   33585   static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
   33586 
   33587   enum class SurfaceCounterFlagBitsEXT
   33588   {
   33589     eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
   33590   };
   33591 
   33592   using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
   33593 
   33594   VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
   33595   {
   33596     return SurfaceCounterFlagsEXT( bit0 ) | bit1;
   33597   }
   33598 
   33599   VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
   33600   {
   33601     return ~( SurfaceCounterFlagsEXT( bits ) );
   33602   }
   33603 
   33604   template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
   33605   {
   33606     enum
   33607     {
   33608       allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
   33609     };
   33610   };
   33611 
   33612   struct SurfaceCapabilities2EXT
   33613   {
   33614     operator VkSurfaceCapabilities2EXT const&() const
   33615     {
   33616       return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
   33617     }
   33618 
   33619     operator VkSurfaceCapabilities2EXT &()
   33620     {
   33621       return *reinterpret_cast<VkSurfaceCapabilities2EXT*>(this);
   33622     }
   33623 
   33624     bool operator==( SurfaceCapabilities2EXT const& rhs ) const
   33625     {
   33626       return ( sType == rhs.sType )
   33627           && ( pNext == rhs.pNext )
   33628           && ( minImageCount == rhs.minImageCount )
   33629           && ( maxImageCount == rhs.maxImageCount )
   33630           && ( currentExtent == rhs.currentExtent )
   33631           && ( minImageExtent == rhs.minImageExtent )
   33632           && ( maxImageExtent == rhs.maxImageExtent )
   33633           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
   33634           && ( supportedTransforms == rhs.supportedTransforms )
   33635           && ( currentTransform == rhs.currentTransform )
   33636           && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
   33637           && ( supportedUsageFlags == rhs.supportedUsageFlags )
   33638           && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
   33639     }
   33640 
   33641     bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
   33642     {
   33643       return !operator==( rhs );
   33644     }
   33645 
   33646   private:
   33647     StructureType sType = StructureType::eSurfaceCapabilities2EXT;
   33648 
   33649   public:
   33650     void* pNext = nullptr;
   33651     uint32_t minImageCount;
   33652     uint32_t maxImageCount;
   33653     Extent2D currentExtent;
   33654     Extent2D minImageExtent;
   33655     Extent2D maxImageExtent;
   33656     uint32_t maxImageArrayLayers;
   33657     SurfaceTransformFlagsKHR supportedTransforms;
   33658     SurfaceTransformFlagBitsKHR currentTransform;
   33659     CompositeAlphaFlagsKHR supportedCompositeAlpha;
   33660     ImageUsageFlags supportedUsageFlags;
   33661     SurfaceCounterFlagsEXT supportedSurfaceCounters;
   33662   };
   33663   static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
   33664 
   33665   struct SwapchainCounterCreateInfoEXT
   33666   {
   33667     SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
   33668       : surfaceCounters( surfaceCounters_ )
   33669     {
   33670     }
   33671 
   33672     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
   33673     {
   33674       memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
   33675     }
   33676 
   33677     SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
   33678     {
   33679       memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
   33680       return *this;
   33681     }
   33682     SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
   33683     {
   33684       pNext = pNext_;
   33685       return *this;
   33686     }
   33687 
   33688     SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
   33689     {
   33690       surfaceCounters = surfaceCounters_;
   33691       return *this;
   33692     }
   33693 
   33694     operator VkSwapchainCounterCreateInfoEXT const&() const
   33695     {
   33696       return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
   33697     }
   33698 
   33699     operator VkSwapchainCounterCreateInfoEXT &()
   33700     {
   33701       return *reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>(this);
   33702     }
   33703 
   33704     bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
   33705     {
   33706       return ( sType == rhs.sType )
   33707           && ( pNext == rhs.pNext )
   33708           && ( surfaceCounters == rhs.surfaceCounters );
   33709     }
   33710 
   33711     bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
   33712     {
   33713       return !operator==( rhs );
   33714     }
   33715 
   33716   private:
   33717     StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
   33718 
   33719   public:
   33720     const void* pNext = nullptr;
   33721     SurfaceCounterFlagsEXT surfaceCounters;
   33722   };
   33723   static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
   33724 
   33725   enum class DisplayPowerStateEXT
   33726   {
   33727     eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
   33728     eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
   33729     eOn = VK_DISPLAY_POWER_STATE_ON_EXT
   33730   };
   33731 
   33732   struct DisplayPowerInfoEXT
   33733   {
   33734     DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
   33735       : powerState( powerState_ )
   33736     {
   33737     }
   33738 
   33739     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
   33740     {
   33741       memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
   33742     }
   33743 
   33744     DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
   33745     {
   33746       memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
   33747       return *this;
   33748     }
   33749     DisplayPowerInfoEXT& setPNext( const void* pNext_ )
   33750     {
   33751       pNext = pNext_;
   33752       return *this;
   33753     }
   33754 
   33755     DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
   33756     {
   33757       powerState = powerState_;
   33758       return *this;
   33759     }
   33760 
   33761     operator VkDisplayPowerInfoEXT const&() const
   33762     {
   33763       return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
   33764     }
   33765 
   33766     operator VkDisplayPowerInfoEXT &()
   33767     {
   33768       return *reinterpret_cast<VkDisplayPowerInfoEXT*>(this);
   33769     }
   33770 
   33771     bool operator==( DisplayPowerInfoEXT const& rhs ) const
   33772     {
   33773       return ( sType == rhs.sType )
   33774           && ( pNext == rhs.pNext )
   33775           && ( powerState == rhs.powerState );
   33776     }
   33777 
   33778     bool operator!=( DisplayPowerInfoEXT const& rhs ) const
   33779     {
   33780       return !operator==( rhs );
   33781     }
   33782 
   33783   private:
   33784     StructureType sType = StructureType::eDisplayPowerInfoEXT;
   33785 
   33786   public:
   33787     const void* pNext = nullptr;
   33788     DisplayPowerStateEXT powerState;
   33789   };
   33790   static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
   33791 
   33792   enum class DeviceEventTypeEXT
   33793   {
   33794     eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
   33795   };
   33796 
   33797   struct DeviceEventInfoEXT
   33798   {
   33799     DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
   33800       : deviceEvent( deviceEvent_ )
   33801     {
   33802     }
   33803 
   33804     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
   33805     {
   33806       memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
   33807     }
   33808 
   33809     DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
   33810     {
   33811       memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
   33812       return *this;
   33813     }
   33814     DeviceEventInfoEXT& setPNext( const void* pNext_ )
   33815     {
   33816       pNext = pNext_;
   33817       return *this;
   33818     }
   33819 
   33820     DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
   33821     {
   33822       deviceEvent = deviceEvent_;
   33823       return *this;
   33824     }
   33825 
   33826     operator VkDeviceEventInfoEXT const&() const
   33827     {
   33828       return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
   33829     }
   33830 
   33831     operator VkDeviceEventInfoEXT &()
   33832     {
   33833       return *reinterpret_cast<VkDeviceEventInfoEXT*>(this);
   33834     }
   33835 
   33836     bool operator==( DeviceEventInfoEXT const& rhs ) const
   33837     {
   33838       return ( sType == rhs.sType )
   33839           && ( pNext == rhs.pNext )
   33840           && ( deviceEvent == rhs.deviceEvent );
   33841     }
   33842 
   33843     bool operator!=( DeviceEventInfoEXT const& rhs ) const
   33844     {
   33845       return !operator==( rhs );
   33846     }
   33847 
   33848   private:
   33849     StructureType sType = StructureType::eDeviceEventInfoEXT;
   33850 
   33851   public:
   33852     const void* pNext = nullptr;
   33853     DeviceEventTypeEXT deviceEvent;
   33854   };
   33855   static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
   33856 
   33857   enum class DisplayEventTypeEXT
   33858   {
   33859     eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
   33860   };
   33861 
   33862   struct DisplayEventInfoEXT
   33863   {
   33864     DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
   33865       : displayEvent( displayEvent_ )
   33866     {
   33867     }
   33868 
   33869     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
   33870     {
   33871       memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
   33872     }
   33873 
   33874     DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
   33875     {
   33876       memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
   33877       return *this;
   33878     }
   33879     DisplayEventInfoEXT& setPNext( const void* pNext_ )
   33880     {
   33881       pNext = pNext_;
   33882       return *this;
   33883     }
   33884 
   33885     DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
   33886     {
   33887       displayEvent = displayEvent_;
   33888       return *this;
   33889     }
   33890 
   33891     operator VkDisplayEventInfoEXT const&() const
   33892     {
   33893       return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
   33894     }
   33895 
   33896     operator VkDisplayEventInfoEXT &()
   33897     {
   33898       return *reinterpret_cast<VkDisplayEventInfoEXT*>(this);
   33899     }
   33900 
   33901     bool operator==( DisplayEventInfoEXT const& rhs ) const
   33902     {
   33903       return ( sType == rhs.sType )
   33904           && ( pNext == rhs.pNext )
   33905           && ( displayEvent == rhs.displayEvent );
   33906     }
   33907 
   33908     bool operator!=( DisplayEventInfoEXT const& rhs ) const
   33909     {
   33910       return !operator==( rhs );
   33911     }
   33912 
   33913   private:
   33914     StructureType sType = StructureType::eDisplayEventInfoEXT;
   33915 
   33916   public:
   33917     const void* pNext = nullptr;
   33918     DisplayEventTypeEXT displayEvent;
   33919   };
   33920   static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
   33921 
   33922   enum class PeerMemoryFeatureFlagBits
   33923   {
   33924     eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
   33925     eCopySrcKHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
   33926     eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
   33927     eCopyDstKHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
   33928     eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
   33929     eGenericSrcKHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
   33930     eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
   33931     eGenericDstKHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
   33932   };
   33933 
   33934   using PeerMemoryFeatureFlags = Flags<PeerMemoryFeatureFlagBits, VkPeerMemoryFeatureFlags>;
   33935 
   33936   VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator|( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 )
   33937   {
   33938     return PeerMemoryFeatureFlags( bit0 ) | bit1;
   33939   }
   33940 
   33941   VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator~( PeerMemoryFeatureFlagBits bits )
   33942   {
   33943     return ~( PeerMemoryFeatureFlags( bits ) );
   33944   }
   33945 
   33946   template <> struct FlagTraits<PeerMemoryFeatureFlagBits>
   33947   {
   33948     enum
   33949     {
   33950       allFlags = VkFlags(PeerMemoryFeatureFlagBits::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBits::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBits::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBits::eGenericDst)
   33951     };
   33952   };
   33953 
   33954   using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags;
   33955 
   33956   enum class MemoryAllocateFlagBits
   33957   {
   33958     eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
   33959     eDeviceMaskKHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
   33960   };
   33961 
   33962   using MemoryAllocateFlags = Flags<MemoryAllocateFlagBits, VkMemoryAllocateFlags>;
   33963 
   33964   VULKAN_HPP_INLINE MemoryAllocateFlags operator|( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 )
   33965   {
   33966     return MemoryAllocateFlags( bit0 ) | bit1;
   33967   }
   33968 
   33969   VULKAN_HPP_INLINE MemoryAllocateFlags operator~( MemoryAllocateFlagBits bits )
   33970   {
   33971     return ~( MemoryAllocateFlags( bits ) );
   33972   }
   33973 
   33974   template <> struct FlagTraits<MemoryAllocateFlagBits>
   33975   {
   33976     enum
   33977     {
   33978       allFlags = VkFlags(MemoryAllocateFlagBits::eDeviceMask)
   33979     };
   33980   };
   33981 
   33982   using MemoryAllocateFlagsKHR = MemoryAllocateFlags;
   33983 
   33984   struct MemoryAllocateFlagsInfo
   33985   {
   33986     MemoryAllocateFlagsInfo( MemoryAllocateFlags flags_ = MemoryAllocateFlags(),
   33987                              uint32_t deviceMask_ = 0 )
   33988       : flags( flags_ )
   33989       , deviceMask( deviceMask_ )
   33990     {
   33991     }
   33992 
   33993     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs )
   33994     {
   33995       memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
   33996     }
   33997 
   33998     MemoryAllocateFlagsInfo& operator=( VkMemoryAllocateFlagsInfo const & rhs )
   33999     {
   34000       memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
   34001       return *this;
   34002     }
   34003     MemoryAllocateFlagsInfo& setPNext( const void* pNext_ )
   34004     {
   34005       pNext = pNext_;
   34006       return *this;
   34007     }
   34008 
   34009     MemoryAllocateFlagsInfo& setFlags( MemoryAllocateFlags flags_ )
   34010     {
   34011       flags = flags_;
   34012       return *this;
   34013     }
   34014 
   34015     MemoryAllocateFlagsInfo& setDeviceMask( uint32_t deviceMask_ )
   34016     {
   34017       deviceMask = deviceMask_;
   34018       return *this;
   34019     }
   34020 
   34021     operator VkMemoryAllocateFlagsInfo const&() const
   34022     {
   34023       return *reinterpret_cast<const VkMemoryAllocateFlagsInfo*>(this);
   34024     }
   34025 
   34026     operator VkMemoryAllocateFlagsInfo &()
   34027     {
   34028       return *reinterpret_cast<VkMemoryAllocateFlagsInfo*>(this);
   34029     }
   34030 
   34031     bool operator==( MemoryAllocateFlagsInfo const& rhs ) const
   34032     {
   34033       return ( sType == rhs.sType )
   34034           && ( pNext == rhs.pNext )
   34035           && ( flags == rhs.flags )
   34036           && ( deviceMask == rhs.deviceMask );
   34037     }
   34038 
   34039     bool operator!=( MemoryAllocateFlagsInfo const& rhs ) const
   34040     {
   34041       return !operator==( rhs );
   34042     }
   34043 
   34044   private:
   34045     StructureType sType = StructureType::eMemoryAllocateFlagsInfo;
   34046 
   34047   public:
   34048     const void* pNext = nullptr;
   34049     MemoryAllocateFlags flags;
   34050     uint32_t deviceMask;
   34051   };
   34052   static_assert( sizeof( MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), "struct and wrapper have different size!" );
   34053 
   34054   using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
   34055 
   34056   enum class DeviceGroupPresentModeFlagBitsKHR
   34057   {
   34058     eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,
   34059     eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,
   34060     eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,
   34061     eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
   34062   };
   34063 
   34064   using DeviceGroupPresentModeFlagsKHR = Flags<DeviceGroupPresentModeFlagBitsKHR, VkDeviceGroupPresentModeFlagsKHR>;
   34065 
   34066   VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator|( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 )
   34067   {
   34068     return DeviceGroupPresentModeFlagsKHR( bit0 ) | bit1;
   34069   }
   34070 
   34071   VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator~( DeviceGroupPresentModeFlagBitsKHR bits )
   34072   {
   34073     return ~( DeviceGroupPresentModeFlagsKHR( bits ) );
   34074   }
   34075 
   34076   template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHR>
   34077   {
   34078     enum
   34079     {
   34080       allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice)
   34081     };
   34082   };
   34083 
   34084   struct DeviceGroupPresentCapabilitiesKHR
   34085   {
   34086     operator VkDeviceGroupPresentCapabilitiesKHR const&() const
   34087     {
   34088       return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR*>(this);
   34089     }
   34090 
   34091     operator VkDeviceGroupPresentCapabilitiesKHR &()
   34092     {
   34093       return *reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>(this);
   34094     }
   34095 
   34096     bool operator==( DeviceGroupPresentCapabilitiesKHR const& rhs ) const
   34097     {
   34098       return ( sType == rhs.sType )
   34099           && ( pNext == rhs.pNext )
   34100           && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof( uint32_t ) ) == 0 )
   34101           && ( modes == rhs.modes );
   34102     }
   34103 
   34104     bool operator!=( DeviceGroupPresentCapabilitiesKHR const& rhs ) const
   34105     {
   34106       return !operator==( rhs );
   34107     }
   34108 
   34109   private:
   34110     StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
   34111 
   34112   public:
   34113     const void* pNext = nullptr;
   34114     uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE];
   34115     DeviceGroupPresentModeFlagsKHR modes;
   34116   };
   34117   static_assert( sizeof( DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), "struct and wrapper have different size!" );
   34118 
   34119   struct DeviceGroupPresentInfoKHR
   34120   {
   34121     DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = 0,
   34122                                const uint32_t* pDeviceMasks_ = nullptr,
   34123                                DeviceGroupPresentModeFlagBitsKHR mode_ = DeviceGroupPresentModeFlagBitsKHR::eLocal )
   34124       : swapchainCount( swapchainCount_ )
   34125       , pDeviceMasks( pDeviceMasks_ )
   34126       , mode( mode_ )
   34127     {
   34128     }
   34129 
   34130     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs )
   34131     {
   34132       memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
   34133     }
   34134 
   34135     DeviceGroupPresentInfoKHR& operator=( VkDeviceGroupPresentInfoKHR const & rhs )
   34136     {
   34137       memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
   34138       return *this;
   34139     }
   34140     DeviceGroupPresentInfoKHR& setPNext( const void* pNext_ )
   34141     {
   34142       pNext = pNext_;
   34143       return *this;
   34144     }
   34145 
   34146     DeviceGroupPresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
   34147     {
   34148       swapchainCount = swapchainCount_;
   34149       return *this;
   34150     }
   34151 
   34152     DeviceGroupPresentInfoKHR& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
   34153     {
   34154       pDeviceMasks = pDeviceMasks_;
   34155       return *this;
   34156     }
   34157 
   34158     DeviceGroupPresentInfoKHR& setMode( DeviceGroupPresentModeFlagBitsKHR mode_ )
   34159     {
   34160       mode = mode_;
   34161       return *this;
   34162     }
   34163 
   34164     operator VkDeviceGroupPresentInfoKHR const&() const
   34165     {
   34166       return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>(this);
   34167     }
   34168 
   34169     operator VkDeviceGroupPresentInfoKHR &()
   34170     {
   34171       return *reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(this);
   34172     }
   34173 
   34174     bool operator==( DeviceGroupPresentInfoKHR const& rhs ) const
   34175     {
   34176       return ( sType == rhs.sType )
   34177           && ( pNext == rhs.pNext )
   34178           && ( swapchainCount == rhs.swapchainCount )
   34179           && ( pDeviceMasks == rhs.pDeviceMasks )
   34180           && ( mode == rhs.mode );
   34181     }
   34182 
   34183     bool operator!=( DeviceGroupPresentInfoKHR const& rhs ) const
   34184     {
   34185       return !operator==( rhs );
   34186     }
   34187 
   34188   private:
   34189     StructureType sType = StructureType::eDeviceGroupPresentInfoKHR;
   34190 
   34191   public:
   34192     const void* pNext = nullptr;
   34193     uint32_t swapchainCount;
   34194     const uint32_t* pDeviceMasks;
   34195     DeviceGroupPresentModeFlagBitsKHR mode;
   34196   };
   34197   static_assert( sizeof( DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), "struct and wrapper have different size!" );
   34198 
   34199   struct DeviceGroupSwapchainCreateInfoKHR
   34200   {
   34201     DeviceGroupSwapchainCreateInfoKHR( DeviceGroupPresentModeFlagsKHR modes_ = DeviceGroupPresentModeFlagsKHR() )
   34202       : modes( modes_ )
   34203     {
   34204     }
   34205 
   34206     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
   34207     {
   34208       memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
   34209     }
   34210 
   34211     DeviceGroupSwapchainCreateInfoKHR& operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
   34212     {
   34213       memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
   34214       return *this;
   34215     }
   34216     DeviceGroupSwapchainCreateInfoKHR& setPNext( const void* pNext_ )
   34217     {
   34218       pNext = pNext_;
   34219       return *this;
   34220     }
   34221 
   34222     DeviceGroupSwapchainCreateInfoKHR& setModes( DeviceGroupPresentModeFlagsKHR modes_ )
   34223     {
   34224       modes = modes_;
   34225       return *this;
   34226     }
   34227 
   34228     operator VkDeviceGroupSwapchainCreateInfoKHR const&() const
   34229     {
   34230       return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>(this);
   34231     }
   34232 
   34233     operator VkDeviceGroupSwapchainCreateInfoKHR &()
   34234     {
   34235       return *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(this);
   34236     }
   34237 
   34238     bool operator==( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const
   34239     {
   34240       return ( sType == rhs.sType )
   34241           && ( pNext == rhs.pNext )
   34242           && ( modes == rhs.modes );
   34243     }
   34244 
   34245     bool operator!=( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const
   34246     {
   34247       return !operator==( rhs );
   34248     }
   34249 
   34250   private:
   34251     StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
   34252 
   34253   public:
   34254     const void* pNext = nullptr;
   34255     DeviceGroupPresentModeFlagsKHR modes;
   34256   };
   34257   static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
   34258 
   34259   enum class SwapchainCreateFlagBitsKHR
   34260   {
   34261     eSplitInstanceBindRegions = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
   34262     eProtected = VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
   34263   };
   34264 
   34265   using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
   34266 
   34267   VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
   34268   {
   34269     return SwapchainCreateFlagsKHR( bit0 ) | bit1;
   34270   }
   34271 
   34272   VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
   34273   {
   34274     return ~( SwapchainCreateFlagsKHR( bits ) );
   34275   }
   34276 
   34277   template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
   34278   {
   34279     enum
   34280     {
   34281       allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) | VkFlags(SwapchainCreateFlagBitsKHR::eProtected)
   34282     };
   34283   };
   34284 
   34285   struct SwapchainCreateInfoKHR
   34286   {
   34287     SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_ = SwapchainCreateFlagsKHR(),
   34288                             SurfaceKHR surface_ = SurfaceKHR(),
   34289                             uint32_t minImageCount_ = 0,
   34290                             Format imageFormat_ = Format::eUndefined,
   34291                             ColorSpaceKHR imageColorSpace_ = ColorSpaceKHR::eSrgbNonlinear,
   34292                             Extent2D imageExtent_ = Extent2D(),
   34293                             uint32_t imageArrayLayers_ = 0,
   34294                             ImageUsageFlags imageUsage_ = ImageUsageFlags(),
   34295                             SharingMode imageSharingMode_ = SharingMode::eExclusive,
   34296                             uint32_t queueFamilyIndexCount_ = 0,
   34297                             const uint32_t* pQueueFamilyIndices_ = nullptr,
   34298                             SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity,
   34299                             CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque,
   34300                             PresentModeKHR presentMode_ = PresentModeKHR::eImmediate,
   34301                             Bool32 clipped_ = 0,
   34302                             SwapchainKHR oldSwapchain_ = SwapchainKHR() )
   34303       : flags( flags_ )
   34304       , surface( surface_ )
   34305       , minImageCount( minImageCount_ )
   34306       , imageFormat( imageFormat_ )
   34307       , imageColorSpace( imageColorSpace_ )
   34308       , imageExtent( imageExtent_ )
   34309       , imageArrayLayers( imageArrayLayers_ )
   34310       , imageUsage( imageUsage_ )
   34311       , imageSharingMode( imageSharingMode_ )
   34312       , queueFamilyIndexCount( queueFamilyIndexCount_ )
   34313       , pQueueFamilyIndices( pQueueFamilyIndices_ )
   34314       , preTransform( preTransform_ )
   34315       , compositeAlpha( compositeAlpha_ )
   34316       , presentMode( presentMode_ )
   34317       , clipped( clipped_ )
   34318       , oldSwapchain( oldSwapchain_ )
   34319     {
   34320     }
   34321 
   34322     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
   34323     {
   34324       memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
   34325     }
   34326 
   34327     SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
   34328     {
   34329       memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
   34330       return *this;
   34331     }
   34332     SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
   34333     {
   34334       pNext = pNext_;
   34335       return *this;
   34336     }
   34337 
   34338     SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
   34339     {
   34340       flags = flags_;
   34341       return *this;
   34342     }
   34343 
   34344     SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
   34345     {
   34346       surface = surface_;
   34347       return *this;
   34348     }
   34349 
   34350     SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
   34351     {
   34352       minImageCount = minImageCount_;
   34353       return *this;
   34354     }
   34355 
   34356     SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
   34357     {
   34358       imageFormat = imageFormat_;
   34359       return *this;
   34360     }
   34361 
   34362     SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
   34363     {
   34364       imageColorSpace = imageColorSpace_;
   34365       return *this;
   34366     }
   34367 
   34368     SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
   34369     {
   34370       imageExtent = imageExtent_;
   34371       return *this;
   34372     }
   34373 
   34374     SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
   34375     {
   34376       imageArrayLayers = imageArrayLayers_;
   34377       return *this;
   34378     }
   34379 
   34380     SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
   34381     {
   34382       imageUsage = imageUsage_;
   34383       return *this;
   34384     }
   34385 
   34386     SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
   34387     {
   34388       imageSharingMode = imageSharingMode_;
   34389       return *this;
   34390     }
   34391 
   34392     SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
   34393     {
   34394       queueFamilyIndexCount = queueFamilyIndexCount_;
   34395       return *this;
   34396     }
   34397 
   34398     SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
   34399     {
   34400       pQueueFamilyIndices = pQueueFamilyIndices_;
   34401       return *this;
   34402     }
   34403 
   34404     SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
   34405     {
   34406       preTransform = preTransform_;
   34407       return *this;
   34408     }
   34409 
   34410     SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
   34411     {
   34412       compositeAlpha = compositeAlpha_;
   34413       return *this;
   34414     }
   34415 
   34416     SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
   34417     {
   34418       presentMode = presentMode_;
   34419       return *this;
   34420     }
   34421 
   34422     SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
   34423     {
   34424       clipped = clipped_;
   34425       return *this;
   34426     }
   34427 
   34428     SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
   34429     {
   34430       oldSwapchain = oldSwapchain_;
   34431       return *this;
   34432     }
   34433 
   34434     operator VkSwapchainCreateInfoKHR const&() const
   34435     {
   34436       return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
   34437     }
   34438 
   34439     operator VkSwapchainCreateInfoKHR &()
   34440     {
   34441       return *reinterpret_cast<VkSwapchainCreateInfoKHR*>(this);
   34442     }
   34443 
   34444     bool operator==( SwapchainCreateInfoKHR const& rhs ) const
   34445     {
   34446       return ( sType == rhs.sType )
   34447           && ( pNext == rhs.pNext )
   34448           && ( flags == rhs.flags )
   34449           && ( surface == rhs.surface )
   34450           && ( minImageCount == rhs.minImageCount )
   34451           && ( imageFormat == rhs.imageFormat )
   34452           && ( imageColorSpace == rhs.imageColorSpace )
   34453           && ( imageExtent == rhs.imageExtent )
   34454           && ( imageArrayLayers == rhs.imageArrayLayers )
   34455           && ( imageUsage == rhs.imageUsage )
   34456           && ( imageSharingMode == rhs.imageSharingMode )
   34457           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
   34458           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
   34459           && ( preTransform == rhs.preTransform )
   34460           && ( compositeAlpha == rhs.compositeAlpha )
   34461           && ( presentMode == rhs.presentMode )
   34462           && ( clipped == rhs.clipped )
   34463           && ( oldSwapchain == rhs.oldSwapchain );
   34464     }
   34465 
   34466     bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
   34467     {
   34468       return !operator==( rhs );
   34469     }
   34470 
   34471   private:
   34472     StructureType sType = StructureType::eSwapchainCreateInfoKHR;
   34473 
   34474   public:
   34475     const void* pNext = nullptr;
   34476     SwapchainCreateFlagsKHR flags;
   34477     SurfaceKHR surface;
   34478     uint32_t minImageCount;
   34479     Format imageFormat;
   34480     ColorSpaceKHR imageColorSpace;
   34481     Extent2D imageExtent;
   34482     uint32_t imageArrayLayers;
   34483     ImageUsageFlags imageUsage;
   34484     SharingMode imageSharingMode;
   34485     uint32_t queueFamilyIndexCount;
   34486     const uint32_t* pQueueFamilyIndices;
   34487     SurfaceTransformFlagBitsKHR preTransform;
   34488     CompositeAlphaFlagBitsKHR compositeAlpha;
   34489     PresentModeKHR presentMode;
   34490     Bool32 clipped;
   34491     SwapchainKHR oldSwapchain;
   34492   };
   34493   static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
   34494 
   34495   enum class ViewportCoordinateSwizzleNV
   34496   {
   34497     ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
   34498     eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
   34499     ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
   34500     eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
   34501     ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
   34502     eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
   34503     ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
   34504     eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
   34505   };
   34506 
   34507   struct ViewportSwizzleNV
   34508   {
   34509     ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX,
   34510                        ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX,
   34511                        ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX,
   34512                        ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
   34513       : x( x_ )
   34514       , y( y_ )
   34515       , z( z_ )
   34516       , w( w_ )
   34517     {
   34518     }
   34519 
   34520     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
   34521     {
   34522       memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
   34523     }
   34524 
   34525     ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
   34526     {
   34527       memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
   34528       return *this;
   34529     }
   34530     ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
   34531     {
   34532       x = x_;
   34533       return *this;
   34534     }
   34535 
   34536     ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
   34537     {
   34538       y = y_;
   34539       return *this;
   34540     }
   34541 
   34542     ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
   34543     {
   34544       z = z_;
   34545       return *this;
   34546     }
   34547 
   34548     ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
   34549     {
   34550       w = w_;
   34551       return *this;
   34552     }
   34553 
   34554     operator VkViewportSwizzleNV const&() const
   34555     {
   34556       return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
   34557     }
   34558 
   34559     operator VkViewportSwizzleNV &()
   34560     {
   34561       return *reinterpret_cast<VkViewportSwizzleNV*>(this);
   34562     }
   34563 
   34564     bool operator==( ViewportSwizzleNV const& rhs ) const
   34565     {
   34566       return ( x == rhs.x )
   34567           && ( y == rhs.y )
   34568           && ( z == rhs.z )
   34569           && ( w == rhs.w );
   34570     }
   34571 
   34572     bool operator!=( ViewportSwizzleNV const& rhs ) const
   34573     {
   34574       return !operator==( rhs );
   34575     }
   34576 
   34577     ViewportCoordinateSwizzleNV x;
   34578     ViewportCoordinateSwizzleNV y;
   34579     ViewportCoordinateSwizzleNV z;
   34580     ViewportCoordinateSwizzleNV w;
   34581   };
   34582   static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
   34583 
   34584   struct PipelineViewportSwizzleStateCreateInfoNV
   34585   {
   34586     PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(),
   34587                                               uint32_t viewportCount_ = 0,
   34588                                               const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
   34589       : flags( flags_ )
   34590       , viewportCount( viewportCount_ )
   34591       , pViewportSwizzles( pViewportSwizzles_ )
   34592     {
   34593     }
   34594 
   34595     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
   34596     {
   34597       memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
   34598     }
   34599 
   34600     PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
   34601     {
   34602       memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
   34603       return *this;
   34604     }
   34605     PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
   34606     {
   34607       pNext = pNext_;
   34608       return *this;
   34609     }
   34610 
   34611     PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
   34612     {
   34613       flags = flags_;
   34614       return *this;
   34615     }
   34616 
   34617     PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
   34618     {
   34619       viewportCount = viewportCount_;
   34620       return *this;
   34621     }
   34622 
   34623     PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
   34624     {
   34625       pViewportSwizzles = pViewportSwizzles_;
   34626       return *this;
   34627     }
   34628 
   34629     operator VkPipelineViewportSwizzleStateCreateInfoNV const&() const
   34630     {
   34631       return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
   34632     }
   34633 
   34634     operator VkPipelineViewportSwizzleStateCreateInfoNV &()
   34635     {
   34636       return *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
   34637     }
   34638 
   34639     bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
   34640     {
   34641       return ( sType == rhs.sType )
   34642           && ( pNext == rhs.pNext )
   34643           && ( flags == rhs.flags )
   34644           && ( viewportCount == rhs.viewportCount )
   34645           && ( pViewportSwizzles == rhs.pViewportSwizzles );
   34646     }
   34647 
   34648     bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
   34649     {
   34650       return !operator==( rhs );
   34651     }
   34652 
   34653   private:
   34654     StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
   34655 
   34656   public:
   34657     const void* pNext = nullptr;
   34658     PipelineViewportSwizzleStateCreateFlagsNV flags;
   34659     uint32_t viewportCount;
   34660     const ViewportSwizzleNV* pViewportSwizzles;
   34661   };
   34662   static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
   34663 
   34664   enum class DiscardRectangleModeEXT
   34665   {
   34666     eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
   34667     eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
   34668   };
   34669 
   34670   struct PipelineDiscardRectangleStateCreateInfoEXT
   34671   {
   34672     PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(),
   34673                                                 DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive,
   34674                                                 uint32_t discardRectangleCount_ = 0,
   34675                                                 const Rect2D* pDiscardRectangles_ = nullptr )
   34676       : flags( flags_ )
   34677       , discardRectangleMode( discardRectangleMode_ )
   34678       , discardRectangleCount( discardRectangleCount_ )
   34679       , pDiscardRectangles( pDiscardRectangles_ )
   34680     {
   34681     }
   34682 
   34683     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
   34684     {
   34685       memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
   34686     }
   34687 
   34688     PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
   34689     {
   34690       memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
   34691       return *this;
   34692     }
   34693     PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
   34694     {
   34695       pNext = pNext_;
   34696       return *this;
   34697     }
   34698 
   34699     PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
   34700     {
   34701       flags = flags_;
   34702       return *this;
   34703     }
   34704 
   34705     PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
   34706     {
   34707       discardRectangleMode = discardRectangleMode_;
   34708       return *this;
   34709     }
   34710 
   34711     PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
   34712     {
   34713       discardRectangleCount = discardRectangleCount_;
   34714       return *this;
   34715     }
   34716 
   34717     PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
   34718     {
   34719       pDiscardRectangles = pDiscardRectangles_;
   34720       return *this;
   34721     }
   34722 
   34723     operator VkPipelineDiscardRectangleStateCreateInfoEXT const&() const
   34724     {
   34725       return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
   34726     }
   34727 
   34728     operator VkPipelineDiscardRectangleStateCreateInfoEXT &()
   34729     {
   34730       return *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
   34731     }
   34732 
   34733     bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
   34734     {
   34735       return ( sType == rhs.sType )
   34736           && ( pNext == rhs.pNext )
   34737           && ( flags == rhs.flags )
   34738           && ( discardRectangleMode == rhs.discardRectangleMode )
   34739           && ( discardRectangleCount == rhs.discardRectangleCount )
   34740           && ( pDiscardRectangles == rhs.pDiscardRectangles );
   34741     }
   34742 
   34743     bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
   34744     {
   34745       return !operator==( rhs );
   34746     }
   34747 
   34748   private:
   34749     StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
   34750 
   34751   public:
   34752     const void* pNext = nullptr;
   34753     PipelineDiscardRectangleStateCreateFlagsEXT flags;
   34754     DiscardRectangleModeEXT discardRectangleMode;
   34755     uint32_t discardRectangleCount;
   34756     const Rect2D* pDiscardRectangles;
   34757   };
   34758   static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
   34759 
   34760   enum class SubpassDescriptionFlagBits
   34761   {
   34762     ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
   34763     ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
   34764   };
   34765 
   34766   using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
   34767 
   34768   VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
   34769   {
   34770     return SubpassDescriptionFlags( bit0 ) | bit1;
   34771   }
   34772 
   34773   VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
   34774   {
   34775     return ~( SubpassDescriptionFlags( bits ) );
   34776   }
   34777 
   34778   template <> struct FlagTraits<SubpassDescriptionFlagBits>
   34779   {
   34780     enum
   34781     {
   34782       allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
   34783     };
   34784   };
   34785 
   34786   struct SubpassDescription
   34787   {
   34788     SubpassDescription( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(),
   34789                         PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
   34790                         uint32_t inputAttachmentCount_ = 0,
   34791                         const AttachmentReference* pInputAttachments_ = nullptr,
   34792                         uint32_t colorAttachmentCount_ = 0,
   34793                         const AttachmentReference* pColorAttachments_ = nullptr,
   34794                         const AttachmentReference* pResolveAttachments_ = nullptr,
   34795                         const AttachmentReference* pDepthStencilAttachment_ = nullptr,
   34796                         uint32_t preserveAttachmentCount_ = 0,
   34797                         const uint32_t* pPreserveAttachments_ = nullptr )
   34798       : flags( flags_ )
   34799       , pipelineBindPoint( pipelineBindPoint_ )
   34800       , inputAttachmentCount( inputAttachmentCount_ )
   34801       , pInputAttachments( pInputAttachments_ )
   34802       , colorAttachmentCount( colorAttachmentCount_ )
   34803       , pColorAttachments( pColorAttachments_ )
   34804       , pResolveAttachments( pResolveAttachments_ )
   34805       , pDepthStencilAttachment( pDepthStencilAttachment_ )
   34806       , preserveAttachmentCount( preserveAttachmentCount_ )
   34807       , pPreserveAttachments( pPreserveAttachments_ )
   34808     {
   34809     }
   34810 
   34811     SubpassDescription( VkSubpassDescription const & rhs )
   34812     {
   34813       memcpy( this, &rhs, sizeof( SubpassDescription ) );
   34814     }
   34815 
   34816     SubpassDescription& operator=( VkSubpassDescription const & rhs )
   34817     {
   34818       memcpy( this, &rhs, sizeof( SubpassDescription ) );
   34819       return *this;
   34820     }
   34821     SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
   34822     {
   34823       flags = flags_;
   34824       return *this;
   34825     }
   34826 
   34827     SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
   34828     {
   34829       pipelineBindPoint = pipelineBindPoint_;
   34830       return *this;
   34831     }
   34832 
   34833     SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
   34834     {
   34835       inputAttachmentCount = inputAttachmentCount_;
   34836       return *this;
   34837     }
   34838 
   34839     SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
   34840     {
   34841       pInputAttachments = pInputAttachments_;
   34842       return *this;
   34843     }
   34844 
   34845     SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
   34846     {
   34847       colorAttachmentCount = colorAttachmentCount_;
   34848       return *this;
   34849     }
   34850 
   34851     SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
   34852     {
   34853       pColorAttachments = pColorAttachments_;
   34854       return *this;
   34855     }
   34856 
   34857     SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
   34858     {
   34859       pResolveAttachments = pResolveAttachments_;
   34860       return *this;
   34861     }
   34862 
   34863     SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
   34864     {
   34865       pDepthStencilAttachment = pDepthStencilAttachment_;
   34866       return *this;
   34867     }
   34868 
   34869     SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
   34870     {
   34871       preserveAttachmentCount = preserveAttachmentCount_;
   34872       return *this;
   34873     }
   34874 
   34875     SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
   34876     {
   34877       pPreserveAttachments = pPreserveAttachments_;
   34878       return *this;
   34879     }
   34880 
   34881     operator VkSubpassDescription const&() const
   34882     {
   34883       return *reinterpret_cast<const VkSubpassDescription*>(this);
   34884     }
   34885 
   34886     operator VkSubpassDescription &()
   34887     {
   34888       return *reinterpret_cast<VkSubpassDescription*>(this);
   34889     }
   34890 
   34891     bool operator==( SubpassDescription const& rhs ) const
   34892     {
   34893       return ( flags == rhs.flags )
   34894           && ( pipelineBindPoint == rhs.pipelineBindPoint )
   34895           && ( inputAttachmentCount == rhs.inputAttachmentCount )
   34896           && ( pInputAttachments == rhs.pInputAttachments )
   34897           && ( colorAttachmentCount == rhs.colorAttachmentCount )
   34898           && ( pColorAttachments == rhs.pColorAttachments )
   34899           && ( pResolveAttachments == rhs.pResolveAttachments )
   34900           && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
   34901           && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
   34902           && ( pPreserveAttachments == rhs.pPreserveAttachments );
   34903     }
   34904 
   34905     bool operator!=( SubpassDescription const& rhs ) const
   34906     {
   34907       return !operator==( rhs );
   34908     }
   34909 
   34910     SubpassDescriptionFlags flags;
   34911     PipelineBindPoint pipelineBindPoint;
   34912     uint32_t inputAttachmentCount;
   34913     const AttachmentReference* pInputAttachments;
   34914     uint32_t colorAttachmentCount;
   34915     const AttachmentReference* pColorAttachments;
   34916     const AttachmentReference* pResolveAttachments;
   34917     const AttachmentReference* pDepthStencilAttachment;
   34918     uint32_t preserveAttachmentCount;
   34919     const uint32_t* pPreserveAttachments;
   34920   };
   34921   static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
   34922 
   34923   struct RenderPassCreateInfo
   34924   {
   34925     RenderPassCreateInfo( RenderPassCreateFlags flags_ = RenderPassCreateFlags(),
   34926                           uint32_t attachmentCount_ = 0,
   34927                           const AttachmentDescription* pAttachments_ = nullptr,
   34928                           uint32_t subpassCount_ = 0,
   34929                           const SubpassDescription* pSubpasses_ = nullptr,
   34930                           uint32_t dependencyCount_ = 0,
   34931                           const SubpassDependency* pDependencies_ = nullptr )
   34932       : flags( flags_ )
   34933       , attachmentCount( attachmentCount_ )
   34934       , pAttachments( pAttachments_ )
   34935       , subpassCount( subpassCount_ )
   34936       , pSubpasses( pSubpasses_ )
   34937       , dependencyCount( dependencyCount_ )
   34938       , pDependencies( pDependencies_ )
   34939     {
   34940     }
   34941 
   34942     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
   34943     {
   34944       memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
   34945     }
   34946 
   34947     RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
   34948     {
   34949       memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
   34950       return *this;
   34951     }
   34952     RenderPassCreateInfo& setPNext( const void* pNext_ )
   34953     {
   34954       pNext = pNext_;
   34955       return *this;
   34956     }
   34957 
   34958     RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
   34959     {
   34960       flags = flags_;
   34961       return *this;
   34962     }
   34963 
   34964     RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
   34965     {
   34966       attachmentCount = attachmentCount_;
   34967       return *this;
   34968     }
   34969 
   34970     RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
   34971     {
   34972       pAttachments = pAttachments_;
   34973       return *this;
   34974     }
   34975 
   34976     RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
   34977     {
   34978       subpassCount = subpassCount_;
   34979       return *this;
   34980     }
   34981 
   34982     RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
   34983     {
   34984       pSubpasses = pSubpasses_;
   34985       return *this;
   34986     }
   34987 
   34988     RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
   34989     {
   34990       dependencyCount = dependencyCount_;
   34991       return *this;
   34992     }
   34993 
   34994     RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
   34995     {
   34996       pDependencies = pDependencies_;
   34997       return *this;
   34998     }
   34999 
   35000     operator VkRenderPassCreateInfo const&() const
   35001     {
   35002       return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
   35003     }
   35004 
   35005     operator VkRenderPassCreateInfo &()
   35006     {
   35007       return *reinterpret_cast<VkRenderPassCreateInfo*>(this);
   35008     }
   35009 
   35010     bool operator==( RenderPassCreateInfo const& rhs ) const
   35011     {
   35012       return ( sType == rhs.sType )
   35013           && ( pNext == rhs.pNext )
   35014           && ( flags == rhs.flags )
   35015           && ( attachmentCount == rhs.attachmentCount )
   35016           && ( pAttachments == rhs.pAttachments )
   35017           && ( subpassCount == rhs.subpassCount )
   35018           && ( pSubpasses == rhs.pSubpasses )
   35019           && ( dependencyCount == rhs.dependencyCount )
   35020           && ( pDependencies == rhs.pDependencies );
   35021     }
   35022 
   35023     bool operator!=( RenderPassCreateInfo const& rhs ) const
   35024     {
   35025       return !operator==( rhs );
   35026     }
   35027 
   35028   private:
   35029     StructureType sType = StructureType::eRenderPassCreateInfo;
   35030 
   35031   public:
   35032     const void* pNext = nullptr;
   35033     RenderPassCreateFlags flags;
   35034     uint32_t attachmentCount;
   35035     const AttachmentDescription* pAttachments;
   35036     uint32_t subpassCount;
   35037     const SubpassDescription* pSubpasses;
   35038     uint32_t dependencyCount;
   35039     const SubpassDependency* pDependencies;
   35040   };
   35041   static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
   35042 
   35043   struct SubpassDescription2KHR
   35044   {
   35045     SubpassDescription2KHR( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(),
   35046                             PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
   35047                             uint32_t viewMask_ = 0,
   35048                             uint32_t inputAttachmentCount_ = 0,
   35049                             const AttachmentReference2KHR* pInputAttachments_ = nullptr,
   35050                             uint32_t colorAttachmentCount_ = 0,
   35051                             const AttachmentReference2KHR* pColorAttachments_ = nullptr,
   35052                             const AttachmentReference2KHR* pResolveAttachments_ = nullptr,
   35053                             const AttachmentReference2KHR* pDepthStencilAttachment_ = nullptr,
   35054                             uint32_t preserveAttachmentCount_ = 0,
   35055                             const uint32_t* pPreserveAttachments_ = nullptr )
   35056       : flags( flags_ )
   35057       , pipelineBindPoint( pipelineBindPoint_ )
   35058       , viewMask( viewMask_ )
   35059       , inputAttachmentCount( inputAttachmentCount_ )
   35060       , pInputAttachments( pInputAttachments_ )
   35061       , colorAttachmentCount( colorAttachmentCount_ )
   35062       , pColorAttachments( pColorAttachments_ )
   35063       , pResolveAttachments( pResolveAttachments_ )
   35064       , pDepthStencilAttachment( pDepthStencilAttachment_ )
   35065       , preserveAttachmentCount( preserveAttachmentCount_ )
   35066       , pPreserveAttachments( pPreserveAttachments_ )
   35067     {
   35068     }
   35069 
   35070     SubpassDescription2KHR( VkSubpassDescription2KHR const & rhs )
   35071     {
   35072       memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
   35073     }
   35074 
   35075     SubpassDescription2KHR& operator=( VkSubpassDescription2KHR const & rhs )
   35076     {
   35077       memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
   35078       return *this;
   35079     }
   35080     SubpassDescription2KHR& setPNext( const void* pNext_ )
   35081     {
   35082       pNext = pNext_;
   35083       return *this;
   35084     }
   35085 
   35086     SubpassDescription2KHR& setFlags( SubpassDescriptionFlags flags_ )
   35087     {
   35088       flags = flags_;
   35089       return *this;
   35090     }
   35091 
   35092     SubpassDescription2KHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
   35093     {
   35094       pipelineBindPoint = pipelineBindPoint_;
   35095       return *this;
   35096     }
   35097 
   35098     SubpassDescription2KHR& setViewMask( uint32_t viewMask_ )
   35099     {
   35100       viewMask = viewMask_;
   35101       return *this;
   35102     }
   35103 
   35104     SubpassDescription2KHR& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
   35105     {
   35106       inputAttachmentCount = inputAttachmentCount_;
   35107       return *this;
   35108     }
   35109 
   35110     SubpassDescription2KHR& setPInputAttachments( const AttachmentReference2KHR* pInputAttachments_ )
   35111     {
   35112       pInputAttachments = pInputAttachments_;
   35113       return *this;
   35114     }
   35115 
   35116     SubpassDescription2KHR& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
   35117     {
   35118       colorAttachmentCount = colorAttachmentCount_;
   35119       return *this;
   35120     }
   35121 
   35122     SubpassDescription2KHR& setPColorAttachments( const AttachmentReference2KHR* pColorAttachments_ )
   35123     {
   35124       pColorAttachments = pColorAttachments_;
   35125       return *this;
   35126     }
   35127 
   35128     SubpassDescription2KHR& setPResolveAttachments( const AttachmentReference2KHR* pResolveAttachments_ )
   35129     {
   35130       pResolveAttachments = pResolveAttachments_;
   35131       return *this;
   35132     }
   35133 
   35134     SubpassDescription2KHR& setPDepthStencilAttachment( const AttachmentReference2KHR* pDepthStencilAttachment_ )
   35135     {
   35136       pDepthStencilAttachment = pDepthStencilAttachment_;
   35137       return *this;
   35138     }
   35139 
   35140     SubpassDescription2KHR& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
   35141     {
   35142       preserveAttachmentCount = preserveAttachmentCount_;
   35143       return *this;
   35144     }
   35145 
   35146     SubpassDescription2KHR& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
   35147     {
   35148       pPreserveAttachments = pPreserveAttachments_;
   35149       return *this;
   35150     }
   35151 
   35152     operator VkSubpassDescription2KHR const&() const
   35153     {
   35154       return *reinterpret_cast<const VkSubpassDescription2KHR*>(this);
   35155     }
   35156 
   35157     operator VkSubpassDescription2KHR &()
   35158     {
   35159       return *reinterpret_cast<VkSubpassDescription2KHR*>(this);
   35160     }
   35161 
   35162     bool operator==( SubpassDescription2KHR const& rhs ) const
   35163     {
   35164       return ( sType == rhs.sType )
   35165           && ( pNext == rhs.pNext )
   35166           && ( flags == rhs.flags )
   35167           && ( pipelineBindPoint == rhs.pipelineBindPoint )
   35168           && ( viewMask == rhs.viewMask )
   35169           && ( inputAttachmentCount == rhs.inputAttachmentCount )
   35170           && ( pInputAttachments == rhs.pInputAttachments )
   35171           && ( colorAttachmentCount == rhs.colorAttachmentCount )
   35172           && ( pColorAttachments == rhs.pColorAttachments )
   35173           && ( pResolveAttachments == rhs.pResolveAttachments )
   35174           && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
   35175           && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
   35176           && ( pPreserveAttachments == rhs.pPreserveAttachments );
   35177     }
   35178 
   35179     bool operator!=( SubpassDescription2KHR const& rhs ) const
   35180     {
   35181       return !operator==( rhs );
   35182     }
   35183 
   35184   private:
   35185     StructureType sType = StructureType::eSubpassDescription2KHR;
   35186 
   35187   public:
   35188     const void* pNext = nullptr;
   35189     SubpassDescriptionFlags flags;
   35190     PipelineBindPoint pipelineBindPoint;
   35191     uint32_t viewMask;
   35192     uint32_t inputAttachmentCount;
   35193     const AttachmentReference2KHR* pInputAttachments;
   35194     uint32_t colorAttachmentCount;
   35195     const AttachmentReference2KHR* pColorAttachments;
   35196     const AttachmentReference2KHR* pResolveAttachments;
   35197     const AttachmentReference2KHR* pDepthStencilAttachment;
   35198     uint32_t preserveAttachmentCount;
   35199     const uint32_t* pPreserveAttachments;
   35200   };
   35201   static_assert( sizeof( SubpassDescription2KHR ) == sizeof( VkSubpassDescription2KHR ), "struct and wrapper have different size!" );
   35202 
   35203   struct RenderPassCreateInfo2KHR
   35204   {
   35205     RenderPassCreateInfo2KHR( RenderPassCreateFlags flags_ = RenderPassCreateFlags(),
   35206                               uint32_t attachmentCount_ = 0,
   35207                               const AttachmentDescription2KHR* pAttachments_ = nullptr,
   35208                               uint32_t subpassCount_ = 0,
   35209                               const SubpassDescription2KHR* pSubpasses_ = nullptr,
   35210                               uint32_t dependencyCount_ = 0,
   35211                               const SubpassDependency2KHR* pDependencies_ = nullptr,
   35212                               uint32_t correlatedViewMaskCount_ = 0,
   35213                               const uint32_t* pCorrelatedViewMasks_ = nullptr )
   35214       : flags( flags_ )
   35215       , attachmentCount( attachmentCount_ )
   35216       , pAttachments( pAttachments_ )
   35217       , subpassCount( subpassCount_ )
   35218       , pSubpasses( pSubpasses_ )
   35219       , dependencyCount( dependencyCount_ )
   35220       , pDependencies( pDependencies_ )
   35221       , correlatedViewMaskCount( correlatedViewMaskCount_ )
   35222       , pCorrelatedViewMasks( pCorrelatedViewMasks_ )
   35223     {
   35224     }
   35225 
   35226     RenderPassCreateInfo2KHR( VkRenderPassCreateInfo2KHR const & rhs )
   35227     {
   35228       memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
   35229     }
   35230 
   35231     RenderPassCreateInfo2KHR& operator=( VkRenderPassCreateInfo2KHR const & rhs )
   35232     {
   35233       memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
   35234       return *this;
   35235     }
   35236     RenderPassCreateInfo2KHR& setPNext( const void* pNext_ )
   35237     {
   35238       pNext = pNext_;
   35239       return *this;
   35240     }
   35241 
   35242     RenderPassCreateInfo2KHR& setFlags( RenderPassCreateFlags flags_ )
   35243     {
   35244       flags = flags_;
   35245       return *this;
   35246     }
   35247 
   35248     RenderPassCreateInfo2KHR& setAttachmentCount( uint32_t attachmentCount_ )
   35249     {
   35250       attachmentCount = attachmentCount_;
   35251       return *this;
   35252     }
   35253 
   35254     RenderPassCreateInfo2KHR& setPAttachments( const AttachmentDescription2KHR* pAttachments_ )
   35255     {
   35256       pAttachments = pAttachments_;
   35257       return *this;
   35258     }
   35259 
   35260     RenderPassCreateInfo2KHR& setSubpassCount( uint32_t subpassCount_ )
   35261     {
   35262       subpassCount = subpassCount_;
   35263       return *this;
   35264     }
   35265 
   35266     RenderPassCreateInfo2KHR& setPSubpasses( const SubpassDescription2KHR* pSubpasses_ )
   35267     {
   35268       pSubpasses = pSubpasses_;
   35269       return *this;
   35270     }
   35271 
   35272     RenderPassCreateInfo2KHR& setDependencyCount( uint32_t dependencyCount_ )
   35273     {
   35274       dependencyCount = dependencyCount_;
   35275       return *this;
   35276     }
   35277 
   35278     RenderPassCreateInfo2KHR& setPDependencies( const SubpassDependency2KHR* pDependencies_ )
   35279     {
   35280       pDependencies = pDependencies_;
   35281       return *this;
   35282     }
   35283 
   35284     RenderPassCreateInfo2KHR& setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ )
   35285     {
   35286       correlatedViewMaskCount = correlatedViewMaskCount_;
   35287       return *this;
   35288     }
   35289 
   35290     RenderPassCreateInfo2KHR& setPCorrelatedViewMasks( const uint32_t* pCorrelatedViewMasks_ )
   35291     {
   35292       pCorrelatedViewMasks = pCorrelatedViewMasks_;
   35293       return *this;
   35294     }
   35295 
   35296     operator VkRenderPassCreateInfo2KHR const&() const
   35297     {
   35298       return *reinterpret_cast<const VkRenderPassCreateInfo2KHR*>(this);
   35299     }
   35300 
   35301     operator VkRenderPassCreateInfo2KHR &()
   35302     {
   35303       return *reinterpret_cast<VkRenderPassCreateInfo2KHR*>(this);
   35304     }
   35305 
   35306     bool operator==( RenderPassCreateInfo2KHR const& rhs ) const
   35307     {
   35308       return ( sType == rhs.sType )
   35309           && ( pNext == rhs.pNext )
   35310           && ( flags == rhs.flags )
   35311           && ( attachmentCount == rhs.attachmentCount )
   35312           && ( pAttachments == rhs.pAttachments )
   35313           && ( subpassCount == rhs.subpassCount )
   35314           && ( pSubpasses == rhs.pSubpasses )
   35315           && ( dependencyCount == rhs.dependencyCount )
   35316           && ( pDependencies == rhs.pDependencies )
   35317           && ( correlatedViewMaskCount == rhs.correlatedViewMaskCount )
   35318           && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks );
   35319     }
   35320 
   35321     bool operator!=( RenderPassCreateInfo2KHR const& rhs ) const
   35322     {
   35323       return !operator==( rhs );
   35324     }
   35325 
   35326   private:
   35327     StructureType sType = StructureType::eRenderPassCreateInfo2KHR;
   35328 
   35329   public:
   35330     const void* pNext = nullptr;
   35331     RenderPassCreateFlags flags;
   35332     uint32_t attachmentCount;
   35333     const AttachmentDescription2KHR* pAttachments;
   35334     uint32_t subpassCount;
   35335     const SubpassDescription2KHR* pSubpasses;
   35336     uint32_t dependencyCount;
   35337     const SubpassDependency2KHR* pDependencies;
   35338     uint32_t correlatedViewMaskCount;
   35339     const uint32_t* pCorrelatedViewMasks;
   35340   };
   35341   static_assert( sizeof( RenderPassCreateInfo2KHR ) == sizeof( VkRenderPassCreateInfo2KHR ), "struct and wrapper have different size!" );
   35342 
   35343   enum class PointClippingBehavior
   35344   {
   35345     eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   35346     eAllClipPlanesKHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   35347     eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
   35348     eUserClipPlanesOnlyKHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
   35349   };
   35350 
   35351   struct PhysicalDevicePointClippingProperties
   35352   {
   35353     operator VkPhysicalDevicePointClippingProperties const&() const
   35354     {
   35355       return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>(this);
   35356     }
   35357 
   35358     operator VkPhysicalDevicePointClippingProperties &()
   35359     {
   35360       return *reinterpret_cast<VkPhysicalDevicePointClippingProperties*>(this);
   35361     }
   35362 
   35363     bool operator==( PhysicalDevicePointClippingProperties const& rhs ) const
   35364     {
   35365       return ( sType == rhs.sType )
   35366           && ( pNext == rhs.pNext )
   35367           && ( pointClippingBehavior == rhs.pointClippingBehavior );
   35368     }
   35369 
   35370     bool operator!=( PhysicalDevicePointClippingProperties const& rhs ) const
   35371     {
   35372       return !operator==( rhs );
   35373     }
   35374 
   35375   private:
   35376     StructureType sType = StructureType::ePhysicalDevicePointClippingProperties;
   35377 
   35378   public:
   35379     void* pNext = nullptr;
   35380     PointClippingBehavior pointClippingBehavior;
   35381   };
   35382   static_assert( sizeof( PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), "struct and wrapper have different size!" );
   35383 
   35384   using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
   35385 
   35386   enum class SamplerReductionModeEXT
   35387   {
   35388     eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
   35389     eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
   35390     eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
   35391   };
   35392 
   35393   struct SamplerReductionModeCreateInfoEXT
   35394   {
   35395     SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
   35396       : reductionMode( reductionMode_ )
   35397     {
   35398     }
   35399 
   35400     SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
   35401     {
   35402       memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
   35403     }
   35404 
   35405     SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
   35406     {
   35407       memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
   35408       return *this;
   35409     }
   35410     SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
   35411     {
   35412       pNext = pNext_;
   35413       return *this;
   35414     }
   35415 
   35416     SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
   35417     {
   35418       reductionMode = reductionMode_;
   35419       return *this;
   35420     }
   35421 
   35422     operator VkSamplerReductionModeCreateInfoEXT const&() const
   35423     {
   35424       return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
   35425     }
   35426 
   35427     operator VkSamplerReductionModeCreateInfoEXT &()
   35428     {
   35429       return *reinterpret_cast<VkSamplerReductionModeCreateInfoEXT*>(this);
   35430     }
   35431 
   35432     bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
   35433     {
   35434       return ( sType == rhs.sType )
   35435           && ( pNext == rhs.pNext )
   35436           && ( reductionMode == rhs.reductionMode );
   35437     }
   35438 
   35439     bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
   35440     {
   35441       return !operator==( rhs );
   35442     }
   35443 
   35444   private:
   35445     StructureType sType = StructureType::eSamplerReductionModeCreateInfoEXT;
   35446 
   35447   public:
   35448     const void* pNext = nullptr;
   35449     SamplerReductionModeEXT reductionMode;
   35450   };
   35451   static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
   35452 
   35453   enum class TessellationDomainOrigin
   35454   {
   35455     eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   35456     eUpperLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   35457     eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
   35458     eLowerLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
   35459   };
   35460 
   35461   struct PipelineTessellationDomainOriginStateCreateInfo
   35462   {
   35463     PipelineTessellationDomainOriginStateCreateInfo( TessellationDomainOrigin domainOrigin_ = TessellationDomainOrigin::eUpperLeft )
   35464       : domainOrigin( domainOrigin_ )
   35465     {
   35466     }
   35467 
   35468     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
   35469     {
   35470       memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
   35471     }
   35472 
   35473     PipelineTessellationDomainOriginStateCreateInfo& operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
   35474     {
   35475       memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
   35476       return *this;
   35477     }
   35478     PipelineTessellationDomainOriginStateCreateInfo& setPNext( const void* pNext_ )
   35479     {
   35480       pNext = pNext_;
   35481       return *this;
   35482     }
   35483 
   35484     PipelineTessellationDomainOriginStateCreateInfo& setDomainOrigin( TessellationDomainOrigin domainOrigin_ )
   35485     {
   35486       domainOrigin = domainOrigin_;
   35487       return *this;
   35488     }
   35489 
   35490     operator VkPipelineTessellationDomainOriginStateCreateInfo const&() const
   35491     {
   35492       return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>(this);
   35493     }
   35494 
   35495     operator VkPipelineTessellationDomainOriginStateCreateInfo &()
   35496     {
   35497       return *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(this);
   35498     }
   35499 
   35500     bool operator==( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const
   35501     {
   35502       return ( sType == rhs.sType )
   35503           && ( pNext == rhs.pNext )
   35504           && ( domainOrigin == rhs.domainOrigin );
   35505     }
   35506 
   35507     bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const
   35508     {
   35509       return !operator==( rhs );
   35510     }
   35511 
   35512   private:
   35513     StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
   35514 
   35515   public:
   35516     const void* pNext = nullptr;
   35517     TessellationDomainOrigin domainOrigin;
   35518   };
   35519   static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfo ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), "struct and wrapper have different size!" );
   35520 
   35521   using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
   35522 
   35523   enum class SamplerYcbcrModelConversion
   35524   {
   35525     eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   35526     eRgbIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   35527     eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
   35528     eYcbcrIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
   35529     eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
   35530     eYcbcr709KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
   35531     eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
   35532     eYcbcr601KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
   35533     eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
   35534     eYcbcr2020KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
   35535   };
   35536 
   35537   enum class SamplerYcbcrRange
   35538   {
   35539     eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   35540     eItuFullKHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   35541     eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
   35542     eItuNarrowKHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
   35543   };
   35544 
   35545   enum class ChromaLocation
   35546   {
   35547     eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN,
   35548     eCositedEvenKHR = VK_CHROMA_LOCATION_COSITED_EVEN,
   35549     eMidpoint = VK_CHROMA_LOCATION_MIDPOINT,
   35550     eMidpointKHR = VK_CHROMA_LOCATION_MIDPOINT
   35551   };
   35552 
   35553   struct SamplerYcbcrConversionCreateInfo
   35554   {
   35555     SamplerYcbcrConversionCreateInfo( Format format_ = Format::eUndefined,
   35556                                       SamplerYcbcrModelConversion ycbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity,
   35557                                       SamplerYcbcrRange ycbcrRange_ = SamplerYcbcrRange::eItuFull,
   35558                                       ComponentMapping components_ = ComponentMapping(),
   35559                                       ChromaLocation xChromaOffset_ = ChromaLocation::eCositedEven,
   35560                                       ChromaLocation yChromaOffset_ = ChromaLocation::eCositedEven,
   35561                                       Filter chromaFilter_ = Filter::eNearest,
   35562                                       Bool32 forceExplicitReconstruction_ = 0 )
   35563       : format( format_ )
   35564       , ycbcrModel( ycbcrModel_ )
   35565       , ycbcrRange( ycbcrRange_ )
   35566       , components( components_ )
   35567       , xChromaOffset( xChromaOffset_ )
   35568       , yChromaOffset( yChromaOffset_ )
   35569       , chromaFilter( chromaFilter_ )
   35570       , forceExplicitReconstruction( forceExplicitReconstruction_ )
   35571     {
   35572     }
   35573 
   35574     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs )
   35575     {
   35576       memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
   35577     }
   35578 
   35579     SamplerYcbcrConversionCreateInfo& operator=( VkSamplerYcbcrConversionCreateInfo const & rhs )
   35580     {
   35581       memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
   35582       return *this;
   35583     }
   35584     SamplerYcbcrConversionCreateInfo& setPNext( const void* pNext_ )
   35585     {
   35586       pNext = pNext_;
   35587       return *this;
   35588     }
   35589 
   35590     SamplerYcbcrConversionCreateInfo& setFormat( Format format_ )
   35591     {
   35592       format = format_;
   35593       return *this;
   35594     }
   35595 
   35596     SamplerYcbcrConversionCreateInfo& setYcbcrModel( SamplerYcbcrModelConversion ycbcrModel_ )
   35597     {
   35598       ycbcrModel = ycbcrModel_;
   35599       return *this;
   35600     }
   35601 
   35602     SamplerYcbcrConversionCreateInfo& setYcbcrRange( SamplerYcbcrRange ycbcrRange_ )
   35603     {
   35604       ycbcrRange = ycbcrRange_;
   35605       return *this;
   35606     }
   35607 
   35608     SamplerYcbcrConversionCreateInfo& setComponents( ComponentMapping components_ )
   35609     {
   35610       components = components_;
   35611       return *this;
   35612     }
   35613 
   35614     SamplerYcbcrConversionCreateInfo& setXChromaOffset( ChromaLocation xChromaOffset_ )
   35615     {
   35616       xChromaOffset = xChromaOffset_;
   35617       return *this;
   35618     }
   35619 
   35620     SamplerYcbcrConversionCreateInfo& setYChromaOffset( ChromaLocation yChromaOffset_ )
   35621     {
   35622       yChromaOffset = yChromaOffset_;
   35623       return *this;
   35624     }
   35625 
   35626     SamplerYcbcrConversionCreateInfo& setChromaFilter( Filter chromaFilter_ )
   35627     {
   35628       chromaFilter = chromaFilter_;
   35629       return *this;
   35630     }
   35631 
   35632     SamplerYcbcrConversionCreateInfo& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
   35633     {
   35634       forceExplicitReconstruction = forceExplicitReconstruction_;
   35635       return *this;
   35636     }
   35637 
   35638     operator VkSamplerYcbcrConversionCreateInfo const&() const
   35639     {
   35640       return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>(this);
   35641     }
   35642 
   35643     operator VkSamplerYcbcrConversionCreateInfo &()
   35644     {
   35645       return *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo*>(this);
   35646     }
   35647 
   35648     bool operator==( SamplerYcbcrConversionCreateInfo const& rhs ) const
   35649     {
   35650       return ( sType == rhs.sType )
   35651           && ( pNext == rhs.pNext )
   35652           && ( format == rhs.format )
   35653           && ( ycbcrModel == rhs.ycbcrModel )
   35654           && ( ycbcrRange == rhs.ycbcrRange )
   35655           && ( components == rhs.components )
   35656           && ( xChromaOffset == rhs.xChromaOffset )
   35657           && ( yChromaOffset == rhs.yChromaOffset )
   35658           && ( chromaFilter == rhs.chromaFilter )
   35659           && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
   35660     }
   35661 
   35662     bool operator!=( SamplerYcbcrConversionCreateInfo const& rhs ) const
   35663     {
   35664       return !operator==( rhs );
   35665     }
   35666 
   35667   private:
   35668     StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo;
   35669 
   35670   public:
   35671     const void* pNext = nullptr;
   35672     Format format;
   35673     SamplerYcbcrModelConversion ycbcrModel;
   35674     SamplerYcbcrRange ycbcrRange;
   35675     ComponentMapping components;
   35676     ChromaLocation xChromaOffset;
   35677     ChromaLocation yChromaOffset;
   35678     Filter chromaFilter;
   35679     Bool32 forceExplicitReconstruction;
   35680   };
   35681   static_assert( sizeof( SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), "struct and wrapper have different size!" );
   35682 
   35683   using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
   35684 
   35685 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   35686   struct AndroidHardwareBufferFormatPropertiesANDROID
   35687   {
   35688     operator VkAndroidHardwareBufferFormatPropertiesANDROID const&() const
   35689     {
   35690       return *reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID*>(this);
   35691     }
   35692 
   35693     operator VkAndroidHardwareBufferFormatPropertiesANDROID &()
   35694     {
   35695       return *reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID*>(this);
   35696     }
   35697 
   35698     bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const
   35699     {
   35700       return ( sType == rhs.sType )
   35701           && ( pNext == rhs.pNext )
   35702           && ( format == rhs.format )
   35703           && ( externalFormat == rhs.externalFormat )
   35704           && ( formatFeatures == rhs.formatFeatures )
   35705           && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents )
   35706           && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel )
   35707           && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange )
   35708           && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset )
   35709           && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
   35710     }
   35711 
   35712     bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const
   35713     {
   35714       return !operator==( rhs );
   35715     }
   35716 
   35717   private:
   35718     StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
   35719 
   35720   public:
   35721     void* pNext = nullptr;
   35722     Format format;
   35723     uint64_t externalFormat;
   35724     FormatFeatureFlags formatFeatures;
   35725     ComponentMapping samplerYcbcrConversionComponents;
   35726     SamplerYcbcrModelConversion suggestedYcbcrModel;
   35727     SamplerYcbcrRange suggestedYcbcrRange;
   35728     ChromaLocation suggestedXChromaOffset;
   35729     ChromaLocation suggestedYChromaOffset;
   35730   };
   35731   static_assert( sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), "struct and wrapper have different size!" );
   35732 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   35733 
   35734   enum class BlendOverlapEXT
   35735   {
   35736     eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
   35737     eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
   35738     eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
   35739   };
   35740 
   35741   struct PipelineColorBlendAdvancedStateCreateInfoEXT
   35742   {
   35743     PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0,
   35744                                                   Bool32 dstPremultiplied_ = 0,
   35745                                                   BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
   35746       : srcPremultiplied( srcPremultiplied_ )
   35747       , dstPremultiplied( dstPremultiplied_ )
   35748       , blendOverlap( blendOverlap_ )
   35749     {
   35750     }
   35751 
   35752     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
   35753     {
   35754       memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
   35755     }
   35756 
   35757     PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
   35758     {
   35759       memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
   35760       return *this;
   35761     }
   35762     PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
   35763     {
   35764       pNext = pNext_;
   35765       return *this;
   35766     }
   35767 
   35768     PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
   35769     {
   35770       srcPremultiplied = srcPremultiplied_;
   35771       return *this;
   35772     }
   35773 
   35774     PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
   35775     {
   35776       dstPremultiplied = dstPremultiplied_;
   35777       return *this;
   35778     }
   35779 
   35780     PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
   35781     {
   35782       blendOverlap = blendOverlap_;
   35783       return *this;
   35784     }
   35785 
   35786     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&() const
   35787     {
   35788       return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
   35789     }
   35790 
   35791     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &()
   35792     {
   35793       return *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
   35794     }
   35795 
   35796     bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
   35797     {
   35798       return ( sType == rhs.sType )
   35799           && ( pNext == rhs.pNext )
   35800           && ( srcPremultiplied == rhs.srcPremultiplied )
   35801           && ( dstPremultiplied == rhs.dstPremultiplied )
   35802           && ( blendOverlap == rhs.blendOverlap );
   35803     }
   35804 
   35805     bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
   35806     {
   35807       return !operator==( rhs );
   35808     }
   35809 
   35810   private:
   35811     StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
   35812 
   35813   public:
   35814     const void* pNext = nullptr;
   35815     Bool32 srcPremultiplied;
   35816     Bool32 dstPremultiplied;
   35817     BlendOverlapEXT blendOverlap;
   35818   };
   35819   static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
   35820 
   35821   enum class CoverageModulationModeNV
   35822   {
   35823     eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
   35824     eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
   35825     eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
   35826     eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
   35827   };
   35828 
   35829   struct PipelineCoverageModulationStateCreateInfoNV
   35830   {
   35831     PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(),
   35832                                                  CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone,
   35833                                                  Bool32 coverageModulationTableEnable_ = 0,
   35834                                                  uint32_t coverageModulationTableCount_ = 0,
   35835                                                  const float* pCoverageModulationTable_ = nullptr )
   35836       : flags( flags_ )
   35837       , coverageModulationMode( coverageModulationMode_ )
   35838       , coverageModulationTableEnable( coverageModulationTableEnable_ )
   35839       , coverageModulationTableCount( coverageModulationTableCount_ )
   35840       , pCoverageModulationTable( pCoverageModulationTable_ )
   35841     {
   35842     }
   35843 
   35844     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
   35845     {
   35846       memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
   35847     }
   35848 
   35849     PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
   35850     {
   35851       memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
   35852       return *this;
   35853     }
   35854     PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
   35855     {
   35856       pNext = pNext_;
   35857       return *this;
   35858     }
   35859 
   35860     PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
   35861     {
   35862       flags = flags_;
   35863       return *this;
   35864     }
   35865 
   35866     PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
   35867     {
   35868       coverageModulationMode = coverageModulationMode_;
   35869       return *this;
   35870     }
   35871 
   35872     PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
   35873     {
   35874       coverageModulationTableEnable = coverageModulationTableEnable_;
   35875       return *this;
   35876     }
   35877 
   35878     PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
   35879     {
   35880       coverageModulationTableCount = coverageModulationTableCount_;
   35881       return *this;
   35882     }
   35883 
   35884     PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
   35885     {
   35886       pCoverageModulationTable = pCoverageModulationTable_;
   35887       return *this;
   35888     }
   35889 
   35890     operator VkPipelineCoverageModulationStateCreateInfoNV const&() const
   35891     {
   35892       return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
   35893     }
   35894 
   35895     operator VkPipelineCoverageModulationStateCreateInfoNV &()
   35896     {
   35897       return *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV*>(this);
   35898     }
   35899 
   35900     bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
   35901     {
   35902       return ( sType == rhs.sType )
   35903           && ( pNext == rhs.pNext )
   35904           && ( flags == rhs.flags )
   35905           && ( coverageModulationMode == rhs.coverageModulationMode )
   35906           && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
   35907           && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
   35908           && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
   35909     }
   35910 
   35911     bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
   35912     {
   35913       return !operator==( rhs );
   35914     }
   35915 
   35916   private:
   35917     StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
   35918 
   35919   public:
   35920     const void* pNext = nullptr;
   35921     PipelineCoverageModulationStateCreateFlagsNV flags;
   35922     CoverageModulationModeNV coverageModulationMode;
   35923     Bool32 coverageModulationTableEnable;
   35924     uint32_t coverageModulationTableCount;
   35925     const float* pCoverageModulationTable;
   35926   };
   35927   static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
   35928 
   35929   enum class ValidationCacheHeaderVersionEXT
   35930   {
   35931     eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
   35932   };
   35933 
   35934   enum class ShaderInfoTypeAMD
   35935   {
   35936     eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
   35937     eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD,
   35938     eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
   35939   };
   35940 
   35941   enum class QueueGlobalPriorityEXT
   35942   {
   35943     eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
   35944     eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
   35945     eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
   35946     eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
   35947   };
   35948 
   35949   struct DeviceQueueGlobalPriorityCreateInfoEXT
   35950   {
   35951     DeviceQueueGlobalPriorityCreateInfoEXT( QueueGlobalPriorityEXT globalPriority_ = QueueGlobalPriorityEXT::eLow )
   35952       : globalPriority( globalPriority_ )
   35953     {
   35954     }
   35955 
   35956     DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
   35957     {
   35958       memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
   35959     }
   35960 
   35961     DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
   35962     {
   35963       memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
   35964       return *this;
   35965     }
   35966     DeviceQueueGlobalPriorityCreateInfoEXT& setPNext( const void* pNext_ )
   35967     {
   35968       pNext = pNext_;
   35969       return *this;
   35970     }
   35971 
   35972     DeviceQueueGlobalPriorityCreateInfoEXT& setGlobalPriority( QueueGlobalPriorityEXT globalPriority_ )
   35973     {
   35974       globalPriority = globalPriority_;
   35975       return *this;
   35976     }
   35977 
   35978     operator VkDeviceQueueGlobalPriorityCreateInfoEXT const&() const
   35979     {
   35980       return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
   35981     }
   35982 
   35983     operator VkDeviceQueueGlobalPriorityCreateInfoEXT &()
   35984     {
   35985       return *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
   35986     }
   35987 
   35988     bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
   35989     {
   35990       return ( sType == rhs.sType )
   35991           && ( pNext == rhs.pNext )
   35992           && ( globalPriority == rhs.globalPriority );
   35993     }
   35994 
   35995     bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
   35996     {
   35997       return !operator==( rhs );
   35998     }
   35999 
   36000   private:
   36001     StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
   36002 
   36003   public:
   36004     const void* pNext = nullptr;
   36005     QueueGlobalPriorityEXT globalPriority;
   36006   };
   36007   static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" );
   36008 
   36009   enum class DebugUtilsMessageSeverityFlagBitsEXT
   36010   {
   36011     eVerbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,
   36012     eInfo = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,
   36013     eWarning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,
   36014     eError = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
   36015   };
   36016 
   36017   using DebugUtilsMessageSeverityFlagsEXT = Flags<DebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageSeverityFlagsEXT>;
   36018 
   36019   VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator|( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 )
   36020   {
   36021     return DebugUtilsMessageSeverityFlagsEXT( bit0 ) | bit1;
   36022   }
   36023 
   36024   VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator~( DebugUtilsMessageSeverityFlagBitsEXT bits )
   36025   {
   36026     return ~( DebugUtilsMessageSeverityFlagsEXT( bits ) );
   36027   }
   36028 
   36029   template <> struct FlagTraits<DebugUtilsMessageSeverityFlagBitsEXT>
   36030   {
   36031     enum
   36032     {
   36033       allFlags = VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eInfo) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eWarning) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eError)
   36034     };
   36035   };
   36036 
   36037   enum class DebugUtilsMessageTypeFlagBitsEXT
   36038   {
   36039     eGeneral = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,
   36040     eValidation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,
   36041     ePerformance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT
   36042   };
   36043 
   36044   using DebugUtilsMessageTypeFlagsEXT = Flags<DebugUtilsMessageTypeFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT>;
   36045 
   36046   VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator|( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 )
   36047   {
   36048     return DebugUtilsMessageTypeFlagsEXT( bit0 ) | bit1;
   36049   }
   36050 
   36051   VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator~( DebugUtilsMessageTypeFlagBitsEXT bits )
   36052   {
   36053     return ~( DebugUtilsMessageTypeFlagsEXT( bits ) );
   36054   }
   36055 
   36056   template <> struct FlagTraits<DebugUtilsMessageTypeFlagBitsEXT>
   36057   {
   36058     enum
   36059     {
   36060       allFlags = VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eGeneral) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eValidation) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::ePerformance)
   36061     };
   36062   };
   36063 
   36064   struct DebugUtilsMessengerCreateInfoEXT
   36065   {
   36066     DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateFlagsEXT flags_ = DebugUtilsMessengerCreateFlagsEXT(),
   36067                                       DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = DebugUtilsMessageSeverityFlagsEXT(),
   36068                                       DebugUtilsMessageTypeFlagsEXT messageType_ = DebugUtilsMessageTypeFlagsEXT(),
   36069                                       PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = nullptr,
   36070                                       void* pUserData_ = nullptr )
   36071       : flags( flags_ )
   36072       , messageSeverity( messageSeverity_ )
   36073       , messageType( messageType_ )
   36074       , pfnUserCallback( pfnUserCallback_ )
   36075       , pUserData( pUserData_ )
   36076     {
   36077     }
   36078 
   36079     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
   36080     {
   36081       memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
   36082     }
   36083 
   36084     DebugUtilsMessengerCreateInfoEXT& operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
   36085     {
   36086       memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
   36087       return *this;
   36088     }
   36089     DebugUtilsMessengerCreateInfoEXT& setPNext( const void* pNext_ )
   36090     {
   36091       pNext = pNext_;
   36092       return *this;
   36093     }
   36094 
   36095     DebugUtilsMessengerCreateInfoEXT& setFlags( DebugUtilsMessengerCreateFlagsEXT flags_ )
   36096     {
   36097       flags = flags_;
   36098       return *this;
   36099     }
   36100 
   36101     DebugUtilsMessengerCreateInfoEXT& setMessageSeverity( DebugUtilsMessageSeverityFlagsEXT messageSeverity_ )
   36102     {
   36103       messageSeverity = messageSeverity_;
   36104       return *this;
   36105     }
   36106 
   36107     DebugUtilsMessengerCreateInfoEXT& setMessageType( DebugUtilsMessageTypeFlagsEXT messageType_ )
   36108     {
   36109       messageType = messageType_;
   36110       return *this;
   36111     }
   36112 
   36113     DebugUtilsMessengerCreateInfoEXT& setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ )
   36114     {
   36115       pfnUserCallback = pfnUserCallback_;
   36116       return *this;
   36117     }
   36118 
   36119     DebugUtilsMessengerCreateInfoEXT& setPUserData( void* pUserData_ )
   36120     {
   36121       pUserData = pUserData_;
   36122       return *this;
   36123     }
   36124 
   36125     operator VkDebugUtilsMessengerCreateInfoEXT const&() const
   36126     {
   36127       return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>(this);
   36128     }
   36129 
   36130     operator VkDebugUtilsMessengerCreateInfoEXT &()
   36131     {
   36132       return *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(this);
   36133     }
   36134 
   36135     bool operator==( DebugUtilsMessengerCreateInfoEXT const& rhs ) const
   36136     {
   36137       return ( sType == rhs.sType )
   36138           && ( pNext == rhs.pNext )
   36139           && ( flags == rhs.flags )
   36140           && ( messageSeverity == rhs.messageSeverity )
   36141           && ( messageType == rhs.messageType )
   36142           && ( pfnUserCallback == rhs.pfnUserCallback )
   36143           && ( pUserData == rhs.pUserData );
   36144     }
   36145 
   36146     bool operator!=( DebugUtilsMessengerCreateInfoEXT const& rhs ) const
   36147     {
   36148       return !operator==( rhs );
   36149     }
   36150 
   36151   private:
   36152     StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
   36153 
   36154   public:
   36155     const void* pNext = nullptr;
   36156     DebugUtilsMessengerCreateFlagsEXT flags;
   36157     DebugUtilsMessageSeverityFlagsEXT messageSeverity;
   36158     DebugUtilsMessageTypeFlagsEXT messageType;
   36159     PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
   36160     void* pUserData;
   36161   };
   36162   static_assert( sizeof( DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), "struct and wrapper have different size!" );
   36163 
   36164   enum class ConservativeRasterizationModeEXT
   36165   {
   36166     eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
   36167     eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,
   36168     eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
   36169   };
   36170 
   36171   struct PipelineRasterizationConservativeStateCreateInfoEXT
   36172   {
   36173     PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = PipelineRasterizationConservativeStateCreateFlagsEXT(),
   36174                                                          ConservativeRasterizationModeEXT conservativeRasterizationMode_ = ConservativeRasterizationModeEXT::eDisabled,
   36175                                                          float extraPrimitiveOverestimationSize_ = 0 )
   36176       : flags( flags_ )
   36177       , conservativeRasterizationMode( conservativeRasterizationMode_ )
   36178       , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ )
   36179     {
   36180     }
   36181 
   36182     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
   36183     {
   36184       memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
   36185     }
   36186 
   36187     PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
   36188     {
   36189       memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
   36190       return *this;
   36191     }
   36192     PipelineRasterizationConservativeStateCreateInfoEXT& setPNext( const void* pNext_ )
   36193     {
   36194       pNext = pNext_;
   36195       return *this;
   36196     }
   36197 
   36198     PipelineRasterizationConservativeStateCreateInfoEXT& setFlags( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ )
   36199     {
   36200       flags = flags_;
   36201       return *this;
   36202     }
   36203 
   36204     PipelineRasterizationConservativeStateCreateInfoEXT& setConservativeRasterizationMode( ConservativeRasterizationModeEXT conservativeRasterizationMode_ )
   36205     {
   36206       conservativeRasterizationMode = conservativeRasterizationMode_;
   36207       return *this;
   36208     }
   36209 
   36210     PipelineRasterizationConservativeStateCreateInfoEXT& setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ )
   36211     {
   36212       extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
   36213       return *this;
   36214     }
   36215 
   36216     operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&() const
   36217     {
   36218       return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this);
   36219     }
   36220 
   36221     operator VkPipelineRasterizationConservativeStateCreateInfoEXT &()
   36222     {
   36223       return *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this);
   36224     }
   36225 
   36226     bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
   36227     {
   36228       return ( sType == rhs.sType )
   36229           && ( pNext == rhs.pNext )
   36230           && ( flags == rhs.flags )
   36231           && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode )
   36232           && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
   36233     }
   36234 
   36235     bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
   36236     {
   36237       return !operator==( rhs );
   36238     }
   36239 
   36240   private:
   36241     StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
   36242 
   36243   public:
   36244     const void* pNext = nullptr;
   36245     PipelineRasterizationConservativeStateCreateFlagsEXT flags;
   36246     ConservativeRasterizationModeEXT conservativeRasterizationMode;
   36247     float extraPrimitiveOverestimationSize;
   36248   };
   36249   static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "struct and wrapper have different size!" );
   36250 
   36251   enum class DescriptorBindingFlagBitsEXT
   36252   {
   36253     eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,
   36254     eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,
   36255     ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,
   36256     eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
   36257   };
   36258 
   36259   using DescriptorBindingFlagsEXT = Flags<DescriptorBindingFlagBitsEXT, VkDescriptorBindingFlagsEXT>;
   36260 
   36261   VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator|( DescriptorBindingFlagBitsEXT bit0, DescriptorBindingFlagBitsEXT bit1 )
   36262   {
   36263     return DescriptorBindingFlagsEXT( bit0 ) | bit1;
   36264   }
   36265 
   36266   VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator~( DescriptorBindingFlagBitsEXT bits )
   36267   {
   36268     return ~( DescriptorBindingFlagsEXT( bits ) );
   36269   }
   36270 
   36271   template <> struct FlagTraits<DescriptorBindingFlagBitsEXT>
   36272   {
   36273     enum
   36274     {
   36275       allFlags = VkFlags(DescriptorBindingFlagBitsEXT::eUpdateAfterBind) | VkFlags(DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending) | VkFlags(DescriptorBindingFlagBitsEXT::ePartiallyBound) | VkFlags(DescriptorBindingFlagBitsEXT::eVariableDescriptorCount)
   36276     };
   36277   };
   36278 
   36279   struct DescriptorSetLayoutBindingFlagsCreateInfoEXT
   36280   {
   36281     DescriptorSetLayoutBindingFlagsCreateInfoEXT( uint32_t bindingCount_ = 0,
   36282                                                   const DescriptorBindingFlagsEXT* pBindingFlags_ = nullptr )
   36283       : bindingCount( bindingCount_ )
   36284       , pBindingFlags( pBindingFlags_ )
   36285     {
   36286     }
   36287 
   36288     DescriptorSetLayoutBindingFlagsCreateInfoEXT( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
   36289     {
   36290       memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
   36291     }
   36292 
   36293     DescriptorSetLayoutBindingFlagsCreateInfoEXT& operator=( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
   36294     {
   36295       memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
   36296       return *this;
   36297     }
   36298     DescriptorSetLayoutBindingFlagsCreateInfoEXT& setPNext( const void* pNext_ )
   36299     {
   36300       pNext = pNext_;
   36301       return *this;
   36302     }
   36303 
   36304     DescriptorSetLayoutBindingFlagsCreateInfoEXT& setBindingCount( uint32_t bindingCount_ )
   36305     {
   36306       bindingCount = bindingCount_;
   36307       return *this;
   36308     }
   36309 
   36310     DescriptorSetLayoutBindingFlagsCreateInfoEXT& setPBindingFlags( const DescriptorBindingFlagsEXT* pBindingFlags_ )
   36311     {
   36312       pBindingFlags = pBindingFlags_;
   36313       return *this;
   36314     }
   36315 
   36316     operator VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const&() const
   36317     {
   36318       return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*>(this);
   36319     }
   36320 
   36321     operator VkDescriptorSetLayoutBindingFlagsCreateInfoEXT &()
   36322     {
   36323       return *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*>(this);
   36324     }
   36325 
   36326     bool operator==( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const
   36327     {
   36328       return ( sType == rhs.sType )
   36329           && ( pNext == rhs.pNext )
   36330           && ( bindingCount == rhs.bindingCount )
   36331           && ( pBindingFlags == rhs.pBindingFlags );
   36332     }
   36333 
   36334     bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const
   36335     {
   36336       return !operator==( rhs );
   36337     }
   36338 
   36339   private:
   36340     StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT;
   36341 
   36342   public:
   36343     const void* pNext = nullptr;
   36344     uint32_t bindingCount;
   36345     const DescriptorBindingFlagsEXT* pBindingFlags;
   36346   };
   36347   static_assert( sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT ), "struct and wrapper have different size!" );
   36348 
   36349   enum class VendorId
   36350   {
   36351     eViv = VK_VENDOR_ID_VIV,
   36352     eVsi = VK_VENDOR_ID_VSI,
   36353     eKazan = VK_VENDOR_ID_KAZAN
   36354   };
   36355 
   36356   enum class DriverIdKHR
   36357   {
   36358     eAmdProprietary = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
   36359     eAmdOpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR,
   36360     eMesaRadv = VK_DRIVER_ID_MESA_RADV_KHR,
   36361     eNvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR,
   36362     eIntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR,
   36363     eIntelOpenSourceMesa = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR,
   36364     eImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR,
   36365     eQualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR,
   36366     eArmProprietary = VK_DRIVER_ID_ARM_PROPRIETARY_KHR
   36367   };
   36368 
   36369   struct PhysicalDeviceDriverPropertiesKHR
   36370   {
   36371     operator VkPhysicalDeviceDriverPropertiesKHR const&() const
   36372     {
   36373       return *reinterpret_cast<const VkPhysicalDeviceDriverPropertiesKHR*>(this);
   36374     }
   36375 
   36376     operator VkPhysicalDeviceDriverPropertiesKHR &()
   36377     {
   36378       return *reinterpret_cast<VkPhysicalDeviceDriverPropertiesKHR*>(this);
   36379     }
   36380 
   36381     bool operator==( PhysicalDeviceDriverPropertiesKHR const& rhs ) const
   36382     {
   36383       return ( sType == rhs.sType )
   36384           && ( pNext == rhs.pNext )
   36385           && ( driverID == rhs.driverID )
   36386           && ( memcmp( driverName, rhs.driverName, VK_MAX_DRIVER_NAME_SIZE_KHR * sizeof( char ) ) == 0 )
   36387           && ( memcmp( driverInfo, rhs.driverInfo, VK_MAX_DRIVER_INFO_SIZE_KHR * sizeof( char ) ) == 0 )
   36388           && ( conformanceVersion == rhs.conformanceVersion );
   36389     }
   36390 
   36391     bool operator!=( PhysicalDeviceDriverPropertiesKHR const& rhs ) const
   36392     {
   36393       return !operator==( rhs );
   36394     }
   36395 
   36396   private:
   36397     StructureType sType = StructureType::ePhysicalDeviceDriverPropertiesKHR;
   36398 
   36399   public:
   36400     void* pNext = nullptr;
   36401     DriverIdKHR driverID;
   36402     char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
   36403     char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
   36404     ConformanceVersionKHR conformanceVersion;
   36405   };
   36406   static_assert( sizeof( PhysicalDeviceDriverPropertiesKHR ) == sizeof( VkPhysicalDeviceDriverPropertiesKHR ), "struct and wrapper have different size!" );
   36407 
   36408   enum class ConditionalRenderingFlagBitsEXT
   36409   {
   36410     eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT
   36411   };
   36412 
   36413   using ConditionalRenderingFlagsEXT = Flags<ConditionalRenderingFlagBitsEXT, VkConditionalRenderingFlagsEXT>;
   36414 
   36415   VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator|( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 )
   36416   {
   36417     return ConditionalRenderingFlagsEXT( bit0 ) | bit1;
   36418   }
   36419 
   36420   VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator~( ConditionalRenderingFlagBitsEXT bits )
   36421   {
   36422     return ~( ConditionalRenderingFlagsEXT( bits ) );
   36423   }
   36424 
   36425   template <> struct FlagTraits<ConditionalRenderingFlagBitsEXT>
   36426   {
   36427     enum
   36428     {
   36429       allFlags = VkFlags(ConditionalRenderingFlagBitsEXT::eInverted)
   36430     };
   36431   };
   36432 
   36433   struct ConditionalRenderingBeginInfoEXT
   36434   {
   36435     ConditionalRenderingBeginInfoEXT( Buffer buffer_ = Buffer(),
   36436                                       DeviceSize offset_ = 0,
   36437                                       ConditionalRenderingFlagsEXT flags_ = ConditionalRenderingFlagsEXT() )
   36438       : buffer( buffer_ )
   36439       , offset( offset_ )
   36440       , flags( flags_ )
   36441     {
   36442     }
   36443 
   36444     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs )
   36445     {
   36446       memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
   36447     }
   36448 
   36449     ConditionalRenderingBeginInfoEXT& operator=( VkConditionalRenderingBeginInfoEXT const & rhs )
   36450     {
   36451       memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
   36452       return *this;
   36453     }
   36454     ConditionalRenderingBeginInfoEXT& setPNext( const void* pNext_ )
   36455     {
   36456       pNext = pNext_;
   36457       return *this;
   36458     }
   36459 
   36460     ConditionalRenderingBeginInfoEXT& setBuffer( Buffer buffer_ )
   36461     {
   36462       buffer = buffer_;
   36463       return *this;
   36464     }
   36465 
   36466     ConditionalRenderingBeginInfoEXT& setOffset( DeviceSize offset_ )
   36467     {
   36468       offset = offset_;
   36469       return *this;
   36470     }
   36471 
   36472     ConditionalRenderingBeginInfoEXT& setFlags( ConditionalRenderingFlagsEXT flags_ )
   36473     {
   36474       flags = flags_;
   36475       return *this;
   36476     }
   36477 
   36478     operator VkConditionalRenderingBeginInfoEXT const&() const
   36479     {
   36480       return *reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>(this);
   36481     }
   36482 
   36483     operator VkConditionalRenderingBeginInfoEXT &()
   36484     {
   36485       return *reinterpret_cast<VkConditionalRenderingBeginInfoEXT*>(this);
   36486     }
   36487 
   36488     bool operator==( ConditionalRenderingBeginInfoEXT const& rhs ) const
   36489     {
   36490       return ( sType == rhs.sType )
   36491           && ( pNext == rhs.pNext )
   36492           && ( buffer == rhs.buffer )
   36493           && ( offset == rhs.offset )
   36494           && ( flags == rhs.flags );
   36495     }
   36496 
   36497     bool operator!=( ConditionalRenderingBeginInfoEXT const& rhs ) const
   36498     {
   36499       return !operator==( rhs );
   36500     }
   36501 
   36502   private:
   36503     StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT;
   36504 
   36505   public:
   36506     const void* pNext = nullptr;
   36507     Buffer buffer;
   36508     DeviceSize offset;
   36509     ConditionalRenderingFlagsEXT flags;
   36510   };
   36511   static_assert( sizeof( ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), "struct and wrapper have different size!" );
   36512 
   36513   enum class ShadingRatePaletteEntryNV
   36514   {
   36515     eNoInvocations = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV,
   36516     e16InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV,
   36517     e8InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV,
   36518     e4InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV,
   36519     e2InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV,
   36520     e1InvocationPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV,
   36521     e1InvocationPer2X1Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV,
   36522     e1InvocationPer1X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV,
   36523     e1InvocationPer2X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV,
   36524     e1InvocationPer4X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV,
   36525     e1InvocationPer2X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV,
   36526     e1InvocationPer4X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV
   36527   };
   36528 
   36529   struct ShadingRatePaletteNV
   36530   {
   36531     ShadingRatePaletteNV( uint32_t shadingRatePaletteEntryCount_ = 0,
   36532                           const ShadingRatePaletteEntryNV* pShadingRatePaletteEntries_ = nullptr )
   36533       : shadingRatePaletteEntryCount( shadingRatePaletteEntryCount_ )
   36534       , pShadingRatePaletteEntries( pShadingRatePaletteEntries_ )
   36535     {
   36536     }
   36537 
   36538     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs )
   36539     {
   36540       memcpy( this, &rhs, sizeof( ShadingRatePaletteNV ) );
   36541     }
   36542 
   36543     ShadingRatePaletteNV& operator=( VkShadingRatePaletteNV const & rhs )
   36544     {
   36545       memcpy( this, &rhs, sizeof( ShadingRatePaletteNV ) );
   36546       return *this;
   36547     }
   36548     ShadingRatePaletteNV& setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ )
   36549     {
   36550       shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_;
   36551       return *this;
   36552     }
   36553 
   36554     ShadingRatePaletteNV& setPShadingRatePaletteEntries( const ShadingRatePaletteEntryNV* pShadingRatePaletteEntries_ )
   36555     {
   36556       pShadingRatePaletteEntries = pShadingRatePaletteEntries_;
   36557       return *this;
   36558     }
   36559 
   36560     operator VkShadingRatePaletteNV const&() const
   36561     {
   36562       return *reinterpret_cast<const VkShadingRatePaletteNV*>(this);
   36563     }
   36564 
   36565     operator VkShadingRatePaletteNV &()
   36566     {
   36567       return *reinterpret_cast<VkShadingRatePaletteNV*>(this);
   36568     }
   36569 
   36570     bool operator==( ShadingRatePaletteNV const& rhs ) const
   36571     {
   36572       return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount )
   36573           && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries );
   36574     }
   36575 
   36576     bool operator!=( ShadingRatePaletteNV const& rhs ) const
   36577     {
   36578       return !operator==( rhs );
   36579     }
   36580 
   36581     uint32_t shadingRatePaletteEntryCount;
   36582     const ShadingRatePaletteEntryNV* pShadingRatePaletteEntries;
   36583   };
   36584   static_assert( sizeof( ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ), "struct and wrapper have different size!" );
   36585 
   36586   struct PipelineViewportShadingRateImageStateCreateInfoNV
   36587   {
   36588     PipelineViewportShadingRateImageStateCreateInfoNV( Bool32 shadingRateImageEnable_ = 0,
   36589                                                        uint32_t viewportCount_ = 0,
   36590                                                        const ShadingRatePaletteNV* pShadingRatePalettes_ = nullptr )
   36591       : shadingRateImageEnable( shadingRateImageEnable_ )
   36592       , viewportCount( viewportCount_ )
   36593       , pShadingRatePalettes( pShadingRatePalettes_ )
   36594     {
   36595     }
   36596 
   36597     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs )
   36598     {
   36599       memcpy( this, &rhs, sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) );
   36600     }
   36601 
   36602     PipelineViewportShadingRateImageStateCreateInfoNV& operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs )
   36603     {
   36604       memcpy( this, &rhs, sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) );
   36605       return *this;
   36606     }
   36607     PipelineViewportShadingRateImageStateCreateInfoNV& setPNext( const void* pNext_ )
   36608     {
   36609       pNext = pNext_;
   36610       return *this;
   36611     }
   36612 
   36613     PipelineViewportShadingRateImageStateCreateInfoNV& setShadingRateImageEnable( Bool32 shadingRateImageEnable_ )
   36614     {
   36615       shadingRateImageEnable = shadingRateImageEnable_;
   36616       return *this;
   36617     }
   36618 
   36619     PipelineViewportShadingRateImageStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
   36620     {
   36621       viewportCount = viewportCount_;
   36622       return *this;
   36623     }
   36624 
   36625     PipelineViewportShadingRateImageStateCreateInfoNV& setPShadingRatePalettes( const ShadingRatePaletteNV* pShadingRatePalettes_ )
   36626     {
   36627       pShadingRatePalettes = pShadingRatePalettes_;
   36628       return *this;
   36629     }
   36630 
   36631     operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&() const
   36632     {
   36633       return *reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV*>(this);
   36634     }
   36635 
   36636     operator VkPipelineViewportShadingRateImageStateCreateInfoNV &()
   36637     {
   36638       return *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV*>(this);
   36639     }
   36640 
   36641     bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const
   36642     {
   36643       return ( sType == rhs.sType )
   36644           && ( pNext == rhs.pNext )
   36645           && ( shadingRateImageEnable == rhs.shadingRateImageEnable )
   36646           && ( viewportCount == rhs.viewportCount )
   36647           && ( pShadingRatePalettes == rhs.pShadingRatePalettes );
   36648     }
   36649 
   36650     bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const
   36651     {
   36652       return !operator==( rhs );
   36653     }
   36654 
   36655   private:
   36656     StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
   36657 
   36658   public:
   36659     const void* pNext = nullptr;
   36660     Bool32 shadingRateImageEnable;
   36661     uint32_t viewportCount;
   36662     const ShadingRatePaletteNV* pShadingRatePalettes;
   36663   };
   36664   static_assert( sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) == sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), "struct and wrapper have different size!" );
   36665 
   36666   struct CoarseSampleOrderCustomNV
   36667   {
   36668     CoarseSampleOrderCustomNV( ShadingRatePaletteEntryNV shadingRate_ = ShadingRatePaletteEntryNV::eNoInvocations,
   36669                                uint32_t sampleCount_ = 0,
   36670                                uint32_t sampleLocationCount_ = 0,
   36671                                const CoarseSampleLocationNV* pSampleLocations_ = nullptr )
   36672       : shadingRate( shadingRate_ )
   36673       , sampleCount( sampleCount_ )
   36674       , sampleLocationCount( sampleLocationCount_ )
   36675       , pSampleLocations( pSampleLocations_ )
   36676     {
   36677     }
   36678 
   36679     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs )
   36680     {
   36681       memcpy( this, &rhs, sizeof( CoarseSampleOrderCustomNV ) );
   36682     }
   36683 
   36684     CoarseSampleOrderCustomNV& operator=( VkCoarseSampleOrderCustomNV const & rhs )
   36685     {
   36686       memcpy( this, &rhs, sizeof( CoarseSampleOrderCustomNV ) );
   36687       return *this;
   36688     }
   36689     CoarseSampleOrderCustomNV& setShadingRate( ShadingRatePaletteEntryNV shadingRate_ )
   36690     {
   36691       shadingRate = shadingRate_;
   36692       return *this;
   36693     }
   36694 
   36695     CoarseSampleOrderCustomNV& setSampleCount( uint32_t sampleCount_ )
   36696     {
   36697       sampleCount = sampleCount_;
   36698       return *this;
   36699     }
   36700 
   36701     CoarseSampleOrderCustomNV& setSampleLocationCount( uint32_t sampleLocationCount_ )
   36702     {
   36703       sampleLocationCount = sampleLocationCount_;
   36704       return *this;
   36705     }
   36706 
   36707     CoarseSampleOrderCustomNV& setPSampleLocations( const CoarseSampleLocationNV* pSampleLocations_ )
   36708     {
   36709       pSampleLocations = pSampleLocations_;
   36710       return *this;
   36711     }
   36712 
   36713     operator VkCoarseSampleOrderCustomNV const&() const
   36714     {
   36715       return *reinterpret_cast<const VkCoarseSampleOrderCustomNV*>(this);
   36716     }
   36717 
   36718     operator VkCoarseSampleOrderCustomNV &()
   36719     {
   36720       return *reinterpret_cast<VkCoarseSampleOrderCustomNV*>(this);
   36721     }
   36722 
   36723     bool operator==( CoarseSampleOrderCustomNV const& rhs ) const
   36724     {
   36725       return ( shadingRate == rhs.shadingRate )
   36726           && ( sampleCount == rhs.sampleCount )
   36727           && ( sampleLocationCount == rhs.sampleLocationCount )
   36728           && ( pSampleLocations == rhs.pSampleLocations );
   36729     }
   36730 
   36731     bool operator!=( CoarseSampleOrderCustomNV const& rhs ) const
   36732     {
   36733       return !operator==( rhs );
   36734     }
   36735 
   36736     ShadingRatePaletteEntryNV shadingRate;
   36737     uint32_t sampleCount;
   36738     uint32_t sampleLocationCount;
   36739     const CoarseSampleLocationNV* pSampleLocations;
   36740   };
   36741   static_assert( sizeof( CoarseSampleOrderCustomNV ) == sizeof( VkCoarseSampleOrderCustomNV ), "struct and wrapper have different size!" );
   36742 
   36743   enum class CoarseSampleOrderTypeNV
   36744   {
   36745     eDefault = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV,
   36746     eCustom = VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV,
   36747     ePixelMajor = VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV,
   36748     eSampleMajor = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV
   36749   };
   36750 
   36751   struct PipelineViewportCoarseSampleOrderStateCreateInfoNV
   36752   {
   36753     PipelineViewportCoarseSampleOrderStateCreateInfoNV( CoarseSampleOrderTypeNV sampleOrderType_ = CoarseSampleOrderTypeNV::eDefault,
   36754                                                         uint32_t customSampleOrderCount_ = 0,
   36755                                                         const CoarseSampleOrderCustomNV* pCustomSampleOrders_ = nullptr )
   36756       : sampleOrderType( sampleOrderType_ )
   36757       , customSampleOrderCount( customSampleOrderCount_ )
   36758       , pCustomSampleOrders( pCustomSampleOrders_ )
   36759     {
   36760     }
   36761 
   36762     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs )
   36763     {
   36764       memcpy( this, &rhs, sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) );
   36765     }
   36766 
   36767     PipelineViewportCoarseSampleOrderStateCreateInfoNV& operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs )
   36768     {
   36769       memcpy( this, &rhs, sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) );
   36770       return *this;
   36771     }
   36772     PipelineViewportCoarseSampleOrderStateCreateInfoNV& setPNext( const void* pNext_ )
   36773     {
   36774       pNext = pNext_;
   36775       return *this;
   36776     }
   36777 
   36778     PipelineViewportCoarseSampleOrderStateCreateInfoNV& setSampleOrderType( CoarseSampleOrderTypeNV sampleOrderType_ )
   36779     {
   36780       sampleOrderType = sampleOrderType_;
   36781       return *this;
   36782     }
   36783 
   36784     PipelineViewportCoarseSampleOrderStateCreateInfoNV& setCustomSampleOrderCount( uint32_t customSampleOrderCount_ )
   36785     {
   36786       customSampleOrderCount = customSampleOrderCount_;
   36787       return *this;
   36788     }
   36789 
   36790     PipelineViewportCoarseSampleOrderStateCreateInfoNV& setPCustomSampleOrders( const CoarseSampleOrderCustomNV* pCustomSampleOrders_ )
   36791     {
   36792       pCustomSampleOrders = pCustomSampleOrders_;
   36793       return *this;
   36794     }
   36795 
   36796     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&() const
   36797     {
   36798       return *reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(this);
   36799     }
   36800 
   36801     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &()
   36802     {
   36803       return *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(this);
   36804     }
   36805 
   36806     bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const
   36807     {
   36808       return ( sType == rhs.sType )
   36809           && ( pNext == rhs.pNext )
   36810           && ( sampleOrderType == rhs.sampleOrderType )
   36811           && ( customSampleOrderCount == rhs.customSampleOrderCount )
   36812           && ( pCustomSampleOrders == rhs.pCustomSampleOrders );
   36813     }
   36814 
   36815     bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const
   36816     {
   36817       return !operator==( rhs );
   36818     }
   36819 
   36820   private:
   36821     StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
   36822 
   36823   public:
   36824     const void* pNext = nullptr;
   36825     CoarseSampleOrderTypeNV sampleOrderType;
   36826     uint32_t customSampleOrderCount;
   36827     const CoarseSampleOrderCustomNV* pCustomSampleOrders;
   36828   };
   36829   static_assert( sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), "struct and wrapper have different size!" );
   36830 
   36831   enum class GeometryInstanceFlagBitsNV
   36832   {
   36833     eTriangleCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,
   36834     eTriangleFrontCounterclockwise = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,
   36835     eForceOpaque = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,
   36836     eForceNoOpaque = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV
   36837   };
   36838 
   36839   using GeometryInstanceFlagsNV = Flags<GeometryInstanceFlagBitsNV, VkGeometryInstanceFlagsNV>;
   36840 
   36841   VULKAN_HPP_INLINE GeometryInstanceFlagsNV operator|( GeometryInstanceFlagBitsNV bit0, GeometryInstanceFlagBitsNV bit1 )
   36842   {
   36843     return GeometryInstanceFlagsNV( bit0 ) | bit1;
   36844   }
   36845 
   36846   VULKAN_HPP_INLINE GeometryInstanceFlagsNV operator~( GeometryInstanceFlagBitsNV bits )
   36847   {
   36848     return ~( GeometryInstanceFlagsNV( bits ) );
   36849   }
   36850 
   36851   template <> struct FlagTraits<GeometryInstanceFlagBitsNV>
   36852   {
   36853     enum
   36854     {
   36855       allFlags = VkFlags(GeometryInstanceFlagBitsNV::eTriangleCullDisable) | VkFlags(GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise) | VkFlags(GeometryInstanceFlagBitsNV::eForceOpaque) | VkFlags(GeometryInstanceFlagBitsNV::eForceNoOpaque)
   36856     };
   36857   };
   36858 
   36859   enum class GeometryFlagBitsNV
   36860   {
   36861     eOpaque = VK_GEOMETRY_OPAQUE_BIT_NV,
   36862     eNoDuplicateAnyHitInvocation = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV
   36863   };
   36864 
   36865   using GeometryFlagsNV = Flags<GeometryFlagBitsNV, VkGeometryFlagsNV>;
   36866 
   36867   VULKAN_HPP_INLINE GeometryFlagsNV operator|( GeometryFlagBitsNV bit0, GeometryFlagBitsNV bit1 )
   36868   {
   36869     return GeometryFlagsNV( bit0 ) | bit1;
   36870   }
   36871 
   36872   VULKAN_HPP_INLINE GeometryFlagsNV operator~( GeometryFlagBitsNV bits )
   36873   {
   36874     return ~( GeometryFlagsNV( bits ) );
   36875   }
   36876 
   36877   template <> struct FlagTraits<GeometryFlagBitsNV>
   36878   {
   36879     enum
   36880     {
   36881       allFlags = VkFlags(GeometryFlagBitsNV::eOpaque) | VkFlags(GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation)
   36882     };
   36883   };
   36884 
   36885   enum class BuildAccelerationStructureFlagBitsNV
   36886   {
   36887     eAllowUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,
   36888     eAllowCompaction = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,
   36889     ePreferFastTrace = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,
   36890     ePreferFastBuild = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,
   36891     eLowMemory = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV
   36892   };
   36893 
   36894   using BuildAccelerationStructureFlagsNV = Flags<BuildAccelerationStructureFlagBitsNV, VkBuildAccelerationStructureFlagsNV>;
   36895 
   36896   VULKAN_HPP_INLINE BuildAccelerationStructureFlagsNV operator|( BuildAccelerationStructureFlagBitsNV bit0, BuildAccelerationStructureFlagBitsNV bit1 )
   36897   {
   36898     return BuildAccelerationStructureFlagsNV( bit0 ) | bit1;
   36899   }
   36900 
   36901   VULKAN_HPP_INLINE BuildAccelerationStructureFlagsNV operator~( BuildAccelerationStructureFlagBitsNV bits )
   36902   {
   36903     return ~( BuildAccelerationStructureFlagsNV( bits ) );
   36904   }
   36905 
   36906   template <> struct FlagTraits<BuildAccelerationStructureFlagBitsNV>
   36907   {
   36908     enum
   36909     {
   36910       allFlags = VkFlags(BuildAccelerationStructureFlagBitsNV::eAllowUpdate) | VkFlags(BuildAccelerationStructureFlagBitsNV::eAllowCompaction) | VkFlags(BuildAccelerationStructureFlagBitsNV::ePreferFastTrace) | VkFlags(BuildAccelerationStructureFlagBitsNV::ePreferFastBuild) | VkFlags(BuildAccelerationStructureFlagBitsNV::eLowMemory)
   36911     };
   36912   };
   36913 
   36914   enum class CopyAccelerationStructureModeNV
   36915   {
   36916     eClone = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV,
   36917     eCompact = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
   36918   };
   36919 
   36920   enum class AccelerationStructureTypeNV
   36921   {
   36922     eTopLevel = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,
   36923     eBottomLevel = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
   36924   };
   36925 
   36926   enum class GeometryTypeNV
   36927   {
   36928     eTriangles = VK_GEOMETRY_TYPE_TRIANGLES_NV,
   36929     eAabbs = VK_GEOMETRY_TYPE_AABBS_NV
   36930   };
   36931 
   36932   struct GeometryNV
   36933   {
   36934     GeometryNV( GeometryTypeNV geometryType_ = GeometryTypeNV::eTriangles,
   36935                 GeometryDataNV geometry_ = GeometryDataNV(),
   36936                 GeometryFlagsNV flags_ = GeometryFlagsNV() )
   36937       : geometryType( geometryType_ )
   36938       , geometry( geometry_ )
   36939       , flags( flags_ )
   36940     {
   36941     }
   36942 
   36943     GeometryNV( VkGeometryNV const & rhs )
   36944     {
   36945       memcpy( this, &rhs, sizeof( GeometryNV ) );
   36946     }
   36947 
   36948     GeometryNV& operator=( VkGeometryNV const & rhs )
   36949     {
   36950       memcpy( this, &rhs, sizeof( GeometryNV ) );
   36951       return *this;
   36952     }
   36953     GeometryNV& setPNext( const void* pNext_ )
   36954     {
   36955       pNext = pNext_;
   36956       return *this;
   36957     }
   36958 
   36959     GeometryNV& setGeometryType( GeometryTypeNV geometryType_ )
   36960     {
   36961       geometryType = geometryType_;
   36962       return *this;
   36963     }
   36964 
   36965     GeometryNV& setGeometry( GeometryDataNV geometry_ )
   36966     {
   36967       geometry = geometry_;
   36968       return *this;
   36969     }
   36970 
   36971     GeometryNV& setFlags( GeometryFlagsNV flags_ )
   36972     {
   36973       flags = flags_;
   36974       return *this;
   36975     }
   36976 
   36977     operator VkGeometryNV const&() const
   36978     {
   36979       return *reinterpret_cast<const VkGeometryNV*>(this);
   36980     }
   36981 
   36982     operator VkGeometryNV &()
   36983     {
   36984       return *reinterpret_cast<VkGeometryNV*>(this);
   36985     }
   36986 
   36987     bool operator==( GeometryNV const& rhs ) const
   36988     {
   36989       return ( sType == rhs.sType )
   36990           && ( pNext == rhs.pNext )
   36991           && ( geometryType == rhs.geometryType )
   36992           && ( geometry == rhs.geometry )
   36993           && ( flags == rhs.flags );
   36994     }
   36995 
   36996     bool operator!=( GeometryNV const& rhs ) const
   36997     {
   36998       return !operator==( rhs );
   36999     }
   37000 
   37001   private:
   37002     StructureType sType = StructureType::eGeometryNV;
   37003 
   37004   public:
   37005     const void* pNext = nullptr;
   37006     GeometryTypeNV geometryType;
   37007     GeometryDataNV geometry;
   37008     GeometryFlagsNV flags;
   37009   };
   37010   static_assert( sizeof( GeometryNV ) == sizeof( VkGeometryNV ), "struct and wrapper have different size!" );
   37011 
   37012   struct AccelerationStructureInfoNV
   37013   {
   37014     AccelerationStructureInfoNV( AccelerationStructureTypeNV type_ = AccelerationStructureTypeNV::eTopLevel,
   37015                                  BuildAccelerationStructureFlagsNV flags_ = BuildAccelerationStructureFlagsNV(),
   37016                                  uint32_t instanceCount_ = 0,
   37017                                  uint32_t geometryCount_ = 0,
   37018                                  const GeometryNV* pGeometries_ = nullptr )
   37019       : type( type_ )
   37020       , flags( flags_ )
   37021       , instanceCount( instanceCount_ )
   37022       , geometryCount( geometryCount_ )
   37023       , pGeometries( pGeometries_ )
   37024     {
   37025     }
   37026 
   37027     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs )
   37028     {
   37029       memcpy( this, &rhs, sizeof( AccelerationStructureInfoNV ) );
   37030     }
   37031 
   37032     AccelerationStructureInfoNV& operator=( VkAccelerationStructureInfoNV const & rhs )
   37033     {
   37034       memcpy( this, &rhs, sizeof( AccelerationStructureInfoNV ) );
   37035       return *this;
   37036     }
   37037     AccelerationStructureInfoNV& setPNext( const void* pNext_ )
   37038     {
   37039       pNext = pNext_;
   37040       return *this;
   37041     }
   37042 
   37043     AccelerationStructureInfoNV& setType( AccelerationStructureTypeNV type_ )
   37044     {
   37045       type = type_;
   37046       return *this;
   37047     }
   37048 
   37049     AccelerationStructureInfoNV& setFlags( BuildAccelerationStructureFlagsNV flags_ )
   37050     {
   37051       flags = flags_;
   37052       return *this;
   37053     }
   37054 
   37055     AccelerationStructureInfoNV& setInstanceCount( uint32_t instanceCount_ )
   37056     {
   37057       instanceCount = instanceCount_;
   37058       return *this;
   37059     }
   37060 
   37061     AccelerationStructureInfoNV& setGeometryCount( uint32_t geometryCount_ )
   37062     {
   37063       geometryCount = geometryCount_;
   37064       return *this;
   37065     }
   37066 
   37067     AccelerationStructureInfoNV& setPGeometries( const GeometryNV* pGeometries_ )
   37068     {
   37069       pGeometries = pGeometries_;
   37070       return *this;
   37071     }
   37072 
   37073     operator VkAccelerationStructureInfoNV const&() const
   37074     {
   37075       return *reinterpret_cast<const VkAccelerationStructureInfoNV*>(this);
   37076     }
   37077 
   37078     operator VkAccelerationStructureInfoNV &()
   37079     {
   37080       return *reinterpret_cast<VkAccelerationStructureInfoNV*>(this);
   37081     }
   37082 
   37083     bool operator==( AccelerationStructureInfoNV const& rhs ) const
   37084     {
   37085       return ( sType == rhs.sType )
   37086           && ( pNext == rhs.pNext )
   37087           && ( type == rhs.type )
   37088           && ( flags == rhs.flags )
   37089           && ( instanceCount == rhs.instanceCount )
   37090           && ( geometryCount == rhs.geometryCount )
   37091           && ( pGeometries == rhs.pGeometries );
   37092     }
   37093 
   37094     bool operator!=( AccelerationStructureInfoNV const& rhs ) const
   37095     {
   37096       return !operator==( rhs );
   37097     }
   37098 
   37099   private:
   37100     StructureType sType = StructureType::eAccelerationStructureInfoNV;
   37101 
   37102   public:
   37103     const void* pNext = nullptr;
   37104     AccelerationStructureTypeNV type;
   37105     BuildAccelerationStructureFlagsNV flags;
   37106     uint32_t instanceCount;
   37107     uint32_t geometryCount;
   37108     const GeometryNV* pGeometries;
   37109   };
   37110   static_assert( sizeof( AccelerationStructureInfoNV ) == sizeof( VkAccelerationStructureInfoNV ), "struct and wrapper have different size!" );
   37111 
   37112   struct AccelerationStructureCreateInfoNV
   37113   {
   37114     AccelerationStructureCreateInfoNV( DeviceSize compactedSize_ = 0,
   37115                                        AccelerationStructureInfoNV info_ = AccelerationStructureInfoNV() )
   37116       : compactedSize( compactedSize_ )
   37117       , info( info_ )
   37118     {
   37119     }
   37120 
   37121     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs )
   37122     {
   37123       memcpy( this, &rhs, sizeof( AccelerationStructureCreateInfoNV ) );
   37124     }
   37125 
   37126     AccelerationStructureCreateInfoNV& operator=( VkAccelerationStructureCreateInfoNV const & rhs )
   37127     {
   37128       memcpy( this, &rhs, sizeof( AccelerationStructureCreateInfoNV ) );
   37129       return *this;
   37130     }
   37131     AccelerationStructureCreateInfoNV& setPNext( const void* pNext_ )
   37132     {
   37133       pNext = pNext_;
   37134       return *this;
   37135     }
   37136 
   37137     AccelerationStructureCreateInfoNV& setCompactedSize( DeviceSize compactedSize_ )
   37138     {
   37139       compactedSize = compactedSize_;
   37140       return *this;
   37141     }
   37142 
   37143     AccelerationStructureCreateInfoNV& setInfo( AccelerationStructureInfoNV info_ )
   37144     {
   37145       info = info_;
   37146       return *this;
   37147     }
   37148 
   37149     operator VkAccelerationStructureCreateInfoNV const&() const
   37150     {
   37151       return *reinterpret_cast<const VkAccelerationStructureCreateInfoNV*>(this);
   37152     }
   37153 
   37154     operator VkAccelerationStructureCreateInfoNV &()
   37155     {
   37156       return *reinterpret_cast<VkAccelerationStructureCreateInfoNV*>(this);
   37157     }
   37158 
   37159     bool operator==( AccelerationStructureCreateInfoNV const& rhs ) const
   37160     {
   37161       return ( sType == rhs.sType )
   37162           && ( pNext == rhs.pNext )
   37163           && ( compactedSize == rhs.compactedSize )
   37164           && ( info == rhs.info );
   37165     }
   37166 
   37167     bool operator!=( AccelerationStructureCreateInfoNV const& rhs ) const
   37168     {
   37169       return !operator==( rhs );
   37170     }
   37171 
   37172   private:
   37173     StructureType sType = StructureType::eAccelerationStructureCreateInfoNV;
   37174 
   37175   public:
   37176     const void* pNext = nullptr;
   37177     DeviceSize compactedSize;
   37178     AccelerationStructureInfoNV info;
   37179   };
   37180   static_assert( sizeof( AccelerationStructureCreateInfoNV ) == sizeof( VkAccelerationStructureCreateInfoNV ), "struct and wrapper have different size!" );
   37181 
   37182   enum class AccelerationStructureMemoryRequirementsTypeNV
   37183   {
   37184     eObject = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,
   37185     eBuildScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV,
   37186     eUpdateScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
   37187   };
   37188 
   37189   struct AccelerationStructureMemoryRequirementsInfoNV
   37190   {
   37191     AccelerationStructureMemoryRequirementsInfoNV( AccelerationStructureMemoryRequirementsTypeNV type_ = AccelerationStructureMemoryRequirementsTypeNV::eObject,
   37192                                                    AccelerationStructureNV accelerationStructure_ = AccelerationStructureNV() )
   37193       : type( type_ )
   37194       , accelerationStructure( accelerationStructure_ )
   37195     {
   37196     }
   37197 
   37198     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs )
   37199     {
   37200       memcpy( this, &rhs, sizeof( AccelerationStructureMemoryRequirementsInfoNV ) );
   37201     }
   37202 
   37203     AccelerationStructureMemoryRequirementsInfoNV& operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs )
   37204     {
   37205       memcpy( this, &rhs, sizeof( AccelerationStructureMemoryRequirementsInfoNV ) );
   37206       return *this;
   37207     }
   37208     AccelerationStructureMemoryRequirementsInfoNV& setPNext( const void* pNext_ )
   37209     {
   37210       pNext = pNext_;
   37211       return *this;
   37212     }
   37213 
   37214     AccelerationStructureMemoryRequirementsInfoNV& setType( AccelerationStructureMemoryRequirementsTypeNV type_ )
   37215     {
   37216       type = type_;
   37217       return *this;
   37218     }
   37219 
   37220     AccelerationStructureMemoryRequirementsInfoNV& setAccelerationStructure( AccelerationStructureNV accelerationStructure_ )
   37221     {
   37222       accelerationStructure = accelerationStructure_;
   37223       return *this;
   37224     }
   37225 
   37226     operator VkAccelerationStructureMemoryRequirementsInfoNV const&() const
   37227     {
   37228       return *reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV*>(this);
   37229     }
   37230 
   37231     operator VkAccelerationStructureMemoryRequirementsInfoNV &()
   37232     {
   37233       return *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV*>(this);
   37234     }
   37235 
   37236     bool operator==( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const
   37237     {
   37238       return ( sType == rhs.sType )
   37239           && ( pNext == rhs.pNext )
   37240           && ( type == rhs.type )
   37241           && ( accelerationStructure == rhs.accelerationStructure );
   37242     }
   37243 
   37244     bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const
   37245     {
   37246       return !operator==( rhs );
   37247     }
   37248 
   37249   private:
   37250     StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
   37251 
   37252   public:
   37253     const void* pNext = nullptr;
   37254     AccelerationStructureMemoryRequirementsTypeNV type;
   37255     AccelerationStructureNV accelerationStructure;
   37256   };
   37257   static_assert( sizeof( AccelerationStructureMemoryRequirementsInfoNV ) == sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), "struct and wrapper have different size!" );
   37258 
   37259   enum class RayTracingShaderGroupTypeNV
   37260   {
   37261     eGeneral = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV,
   37262     eTrianglesHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV,
   37263     eProceduralHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
   37264   };
   37265 
   37266   struct RayTracingShaderGroupCreateInfoNV
   37267   {
   37268     RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupTypeNV type_ = RayTracingShaderGroupTypeNV::eGeneral,
   37269                                        uint32_t generalShader_ = 0,
   37270                                        uint32_t closestHitShader_ = 0,
   37271                                        uint32_t anyHitShader_ = 0,
   37272                                        uint32_t intersectionShader_ = 0 )
   37273       : type( type_ )
   37274       , generalShader( generalShader_ )
   37275       , closestHitShader( closestHitShader_ )
   37276       , anyHitShader( anyHitShader_ )
   37277       , intersectionShader( intersectionShader_ )
   37278     {
   37279     }
   37280 
   37281     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs )
   37282     {
   37283       memcpy( this, &rhs, sizeof( RayTracingShaderGroupCreateInfoNV ) );
   37284     }
   37285 
   37286     RayTracingShaderGroupCreateInfoNV& operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs )
   37287     {
   37288       memcpy( this, &rhs, sizeof( RayTracingShaderGroupCreateInfoNV ) );
   37289       return *this;
   37290     }
   37291     RayTracingShaderGroupCreateInfoNV& setPNext( const void* pNext_ )
   37292     {
   37293       pNext = pNext_;
   37294       return *this;
   37295     }
   37296 
   37297     RayTracingShaderGroupCreateInfoNV& setType( RayTracingShaderGroupTypeNV type_ )
   37298     {
   37299       type = type_;
   37300       return *this;
   37301     }
   37302 
   37303     RayTracingShaderGroupCreateInfoNV& setGeneralShader( uint32_t generalShader_ )
   37304     {
   37305       generalShader = generalShader_;
   37306       return *this;
   37307     }
   37308 
   37309     RayTracingShaderGroupCreateInfoNV& setClosestHitShader( uint32_t closestHitShader_ )
   37310     {
   37311       closestHitShader = closestHitShader_;
   37312       return *this;
   37313     }
   37314 
   37315     RayTracingShaderGroupCreateInfoNV& setAnyHitShader( uint32_t anyHitShader_ )
   37316     {
   37317       anyHitShader = anyHitShader_;
   37318       return *this;
   37319     }
   37320 
   37321     RayTracingShaderGroupCreateInfoNV& setIntersectionShader( uint32_t intersectionShader_ )
   37322     {
   37323       intersectionShader = intersectionShader_;
   37324       return *this;
   37325     }
   37326 
   37327     operator VkRayTracingShaderGroupCreateInfoNV const&() const
   37328     {
   37329       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoNV*>(this);
   37330     }
   37331 
   37332     operator VkRayTracingShaderGroupCreateInfoNV &()
   37333     {
   37334       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV*>(this);
   37335     }
   37336 
   37337     bool operator==( RayTracingShaderGroupCreateInfoNV const& rhs ) const
   37338     {
   37339       return ( sType == rhs.sType )
   37340           && ( pNext == rhs.pNext )
   37341           && ( type == rhs.type )
   37342           && ( generalShader == rhs.generalShader )
   37343           && ( closestHitShader == rhs.closestHitShader )
   37344           && ( anyHitShader == rhs.anyHitShader )
   37345           && ( intersectionShader == rhs.intersectionShader );
   37346     }
   37347 
   37348     bool operator!=( RayTracingShaderGroupCreateInfoNV const& rhs ) const
   37349     {
   37350       return !operator==( rhs );
   37351     }
   37352 
   37353   private:
   37354     StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV;
   37355 
   37356   public:
   37357     const void* pNext = nullptr;
   37358     RayTracingShaderGroupTypeNV type;
   37359     uint32_t generalShader;
   37360     uint32_t closestHitShader;
   37361     uint32_t anyHitShader;
   37362     uint32_t intersectionShader;
   37363   };
   37364   static_assert( sizeof( RayTracingShaderGroupCreateInfoNV ) == sizeof( VkRayTracingShaderGroupCreateInfoNV ), "struct and wrapper have different size!" );
   37365 
   37366   struct RayTracingPipelineCreateInfoNV
   37367   {
   37368     RayTracingPipelineCreateInfoNV( PipelineCreateFlags flags_ = PipelineCreateFlags(),
   37369                                     uint32_t stageCount_ = 0,
   37370                                     const PipelineShaderStageCreateInfo* pStages_ = nullptr,
   37371                                     uint32_t groupCount_ = 0,
   37372                                     const RayTracingShaderGroupCreateInfoNV* pGroups_ = nullptr,
   37373                                     uint32_t maxRecursionDepth_ = 0,
   37374                                     PipelineLayout layout_ = PipelineLayout(),
   37375                                     Pipeline basePipelineHandle_ = Pipeline(),
   37376                                     int32_t basePipelineIndex_ = 0 )
   37377       : flags( flags_ )
   37378       , stageCount( stageCount_ )
   37379       , pStages( pStages_ )
   37380       , groupCount( groupCount_ )
   37381       , pGroups( pGroups_ )
   37382       , maxRecursionDepth( maxRecursionDepth_ )
   37383       , layout( layout_ )
   37384       , basePipelineHandle( basePipelineHandle_ )
   37385       , basePipelineIndex( basePipelineIndex_ )
   37386     {
   37387     }
   37388 
   37389     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs )
   37390     {
   37391       memcpy( this, &rhs, sizeof( RayTracingPipelineCreateInfoNV ) );
   37392     }
   37393 
   37394     RayTracingPipelineCreateInfoNV& operator=( VkRayTracingPipelineCreateInfoNV const & rhs )
   37395     {
   37396       memcpy( this, &rhs, sizeof( RayTracingPipelineCreateInfoNV ) );
   37397       return *this;
   37398     }
   37399     RayTracingPipelineCreateInfoNV& setPNext( const void* pNext_ )
   37400     {
   37401       pNext = pNext_;
   37402       return *this;
   37403     }
   37404 
   37405     RayTracingPipelineCreateInfoNV& setFlags( PipelineCreateFlags flags_ )
   37406     {
   37407       flags = flags_;
   37408       return *this;
   37409     }
   37410 
   37411     RayTracingPipelineCreateInfoNV& setStageCount( uint32_t stageCount_ )
   37412     {
   37413       stageCount = stageCount_;
   37414       return *this;
   37415     }
   37416 
   37417     RayTracingPipelineCreateInfoNV& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
   37418     {
   37419       pStages = pStages_;
   37420       return *this;
   37421     }
   37422 
   37423     RayTracingPipelineCreateInfoNV& setGroupCount( uint32_t groupCount_ )
   37424     {
   37425       groupCount = groupCount_;
   37426       return *this;
   37427     }
   37428 
   37429     RayTracingPipelineCreateInfoNV& setPGroups( const RayTracingShaderGroupCreateInfoNV* pGroups_ )
   37430     {
   37431       pGroups = pGroups_;
   37432       return *this;
   37433     }
   37434 
   37435     RayTracingPipelineCreateInfoNV& setMaxRecursionDepth( uint32_t maxRecursionDepth_ )
   37436     {
   37437       maxRecursionDepth = maxRecursionDepth_;
   37438       return *this;
   37439     }
   37440 
   37441     RayTracingPipelineCreateInfoNV& setLayout( PipelineLayout layout_ )
   37442     {
   37443       layout = layout_;
   37444       return *this;
   37445     }
   37446 
   37447     RayTracingPipelineCreateInfoNV& setBasePipelineHandle( Pipeline basePipelineHandle_ )
   37448     {
   37449       basePipelineHandle = basePipelineHandle_;
   37450       return *this;
   37451     }
   37452 
   37453     RayTracingPipelineCreateInfoNV& setBasePipelineIndex( int32_t basePipelineIndex_ )
   37454     {
   37455       basePipelineIndex = basePipelineIndex_;
   37456       return *this;
   37457     }
   37458 
   37459     operator VkRayTracingPipelineCreateInfoNV const&() const
   37460     {
   37461       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>(this);
   37462     }
   37463 
   37464     operator VkRayTracingPipelineCreateInfoNV &()
   37465     {
   37466       return *reinterpret_cast<VkRayTracingPipelineCreateInfoNV*>(this);
   37467     }
   37468 
   37469     bool operator==( RayTracingPipelineCreateInfoNV const& rhs ) const
   37470     {
   37471       return ( sType == rhs.sType )
   37472           && ( pNext == rhs.pNext )
   37473           && ( flags == rhs.flags )
   37474           && ( stageCount == rhs.stageCount )
   37475           && ( pStages == rhs.pStages )
   37476           && ( groupCount == rhs.groupCount )
   37477           && ( pGroups == rhs.pGroups )
   37478           && ( maxRecursionDepth == rhs.maxRecursionDepth )
   37479           && ( layout == rhs.layout )
   37480           && ( basePipelineHandle == rhs.basePipelineHandle )
   37481           && ( basePipelineIndex == rhs.basePipelineIndex );
   37482     }
   37483 
   37484     bool operator!=( RayTracingPipelineCreateInfoNV const& rhs ) const
   37485     {
   37486       return !operator==( rhs );
   37487     }
   37488 
   37489   private:
   37490     StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV;
   37491 
   37492   public:
   37493     const void* pNext = nullptr;
   37494     PipelineCreateFlags flags;
   37495     uint32_t stageCount;
   37496     const PipelineShaderStageCreateInfo* pStages;
   37497     uint32_t groupCount;
   37498     const RayTracingShaderGroupCreateInfoNV* pGroups;
   37499     uint32_t maxRecursionDepth;
   37500     PipelineLayout layout;
   37501     Pipeline basePipelineHandle;
   37502     int32_t basePipelineIndex;
   37503   };
   37504   static_assert( sizeof( RayTracingPipelineCreateInfoNV ) == sizeof( VkRayTracingPipelineCreateInfoNV ), "struct and wrapper have different size!" );
   37505 
   37506   enum class MemoryOverallocationBehaviorAMD
   37507   {
   37508     eDefault = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD,
   37509     eAllowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD,
   37510     eDisallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD
   37511   };
   37512 
   37513   struct DeviceMemoryOverallocationCreateInfoAMD
   37514   {
   37515     DeviceMemoryOverallocationCreateInfoAMD( MemoryOverallocationBehaviorAMD overallocationBehavior_ = MemoryOverallocationBehaviorAMD::eDefault )
   37516       : overallocationBehavior( overallocationBehavior_ )
   37517     {
   37518     }
   37519 
   37520     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs )
   37521     {
   37522       memcpy( this, &rhs, sizeof( DeviceMemoryOverallocationCreateInfoAMD ) );
   37523     }
   37524 
   37525     DeviceMemoryOverallocationCreateInfoAMD& operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs )
   37526     {
   37527       memcpy( this, &rhs, sizeof( DeviceMemoryOverallocationCreateInfoAMD ) );
   37528       return *this;
   37529     }
   37530     DeviceMemoryOverallocationCreateInfoAMD& setPNext( const void* pNext_ )
   37531     {
   37532       pNext = pNext_;
   37533       return *this;
   37534     }
   37535 
   37536     DeviceMemoryOverallocationCreateInfoAMD& setOverallocationBehavior( MemoryOverallocationBehaviorAMD overallocationBehavior_ )
   37537     {
   37538       overallocationBehavior = overallocationBehavior_;
   37539       return *this;
   37540     }
   37541 
   37542     operator VkDeviceMemoryOverallocationCreateInfoAMD const&() const
   37543     {
   37544       return *reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD*>(this);
   37545     }
   37546 
   37547     operator VkDeviceMemoryOverallocationCreateInfoAMD &()
   37548     {
   37549       return *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD*>(this);
   37550     }
   37551 
   37552     bool operator==( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const
   37553     {
   37554       return ( sType == rhs.sType )
   37555           && ( pNext == rhs.pNext )
   37556           && ( overallocationBehavior == rhs.overallocationBehavior );
   37557     }
   37558 
   37559     bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const
   37560     {
   37561       return !operator==( rhs );
   37562     }
   37563 
   37564   private:
   37565     StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
   37566 
   37567   public:
   37568     const void* pNext = nullptr;
   37569     MemoryOverallocationBehaviorAMD overallocationBehavior;
   37570   };
   37571   static_assert( sizeof( DeviceMemoryOverallocationCreateInfoAMD ) == sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), "struct and wrapper have different size!" );
   37572 
   37573   template<typename Dispatch = DispatchLoaderStatic>
   37574   Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d = Dispatch() );
   37575 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37576   template<typename Dispatch = DispatchLoaderStatic>
   37577   ResultValueType<uint32_t>::type enumerateInstanceVersion(Dispatch const &d = Dispatch() );
   37578 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37579 
   37580   template<typename Dispatch>
   37581   VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d)
   37582   {
   37583     return static_cast<Result>( d.vkEnumerateInstanceVersion( pApiVersion ) );
   37584   }
   37585 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37586   template<typename Dispatch>
   37587   VULKAN_HPP_INLINE ResultValueType<uint32_t>::type enumerateInstanceVersion(Dispatch const &d )
   37588   {
   37589     uint32_t apiVersion;
   37590     Result result = static_cast<Result>( d.vkEnumerateInstanceVersion( &apiVersion ) );
   37591     return createResultValue( result, apiVersion, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceVersion" );
   37592   }
   37593 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37594 
   37595 
   37596   template<typename Dispatch = DispatchLoaderStatic>
   37597   Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d = Dispatch() );
   37598 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37599   template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
   37600   typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Dispatch const &d = Dispatch() );
   37601   template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
   37602   typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d );
   37603 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37604 
   37605   template<typename Dispatch>
   37606   VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d)
   37607   {
   37608     return static_cast<Result>( d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
   37609   }
   37610 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37611   template <typename Allocator, typename Dispatch>
   37612   VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Dispatch const &d )
   37613   {
   37614     std::vector<LayerProperties,Allocator> properties;
   37615     uint32_t propertyCount;
   37616     Result result;
   37617     do
   37618     {
   37619       result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
   37620       if ( ( result == Result::eSuccess ) && propertyCount )
   37621       {
   37622         properties.resize( propertyCount );
   37623         result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
   37624       }
   37625     } while ( result == Result::eIncomplete );
   37626     if ( result == Result::eSuccess )
   37627     {
   37628       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   37629       properties.resize( propertyCount );
   37630     }
   37631     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" );
   37632   }
   37633   template <typename Allocator, typename Dispatch>
   37634   VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d )
   37635   {
   37636     std::vector<LayerProperties,Allocator> properties( vectorAllocator );
   37637     uint32_t propertyCount;
   37638     Result result;
   37639     do
   37640     {
   37641       result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
   37642       if ( ( result == Result::eSuccess ) && propertyCount )
   37643       {
   37644         properties.resize( propertyCount );
   37645         result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
   37646       }
   37647     } while ( result == Result::eIncomplete );
   37648     if ( result == Result::eSuccess )
   37649     {
   37650       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   37651       properties.resize( propertyCount );
   37652     }
   37653     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" );
   37654   }
   37655 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37656 
   37657 
   37658   template<typename Dispatch = DispatchLoaderStatic>
   37659   Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d = Dispatch() );
   37660 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37661   template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
   37662   typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr, Dispatch const &d = Dispatch() );
   37663   template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
   37664   typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName, Allocator const& vectorAllocator, Dispatch const &d );
   37665 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37666 
   37667   template<typename Dispatch>
   37668   VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d)
   37669   {
   37670     return static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
   37671   }
   37672 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37673   template <typename Allocator, typename Dispatch>
   37674   VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName, Dispatch const &d )
   37675   {
   37676     std::vector<ExtensionProperties,Allocator> properties;
   37677     uint32_t propertyCount;
   37678     Result result;
   37679     do
   37680     {
   37681       result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
   37682       if ( ( result == Result::eSuccess ) && propertyCount )
   37683       {
   37684         properties.resize( propertyCount );
   37685         result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
   37686       }
   37687     } while ( result == Result::eIncomplete );
   37688     if ( result == Result::eSuccess )
   37689     {
   37690       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   37691       properties.resize( propertyCount );
   37692     }
   37693     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" );
   37694   }
   37695   template <typename Allocator, typename Dispatch>
   37696   VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName, Allocator const& vectorAllocator, Dispatch const &d )
   37697   {
   37698     std::vector<ExtensionProperties,Allocator> properties( vectorAllocator );
   37699     uint32_t propertyCount;
   37700     Result result;
   37701     do
   37702     {
   37703       result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
   37704       if ( ( result == Result::eSuccess ) && propertyCount )
   37705       {
   37706         properties.resize( propertyCount );
   37707         result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
   37708       }
   37709     } while ( result == Result::eIncomplete );
   37710     if ( result == Result::eSuccess )
   37711     {
   37712       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   37713       properties.resize( propertyCount );
   37714     }
   37715     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" );
   37716   }
   37717 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37718 
   37719 
   37720   // forward declarations
   37721   struct CmdProcessCommandsInfoNVX;
   37722 
   37723   class CommandBuffer
   37724   {
   37725   public:
   37726     VULKAN_HPP_CONSTEXPR CommandBuffer()
   37727       : m_commandBuffer(VK_NULL_HANDLE)
   37728     {}
   37729 
   37730     VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t )
   37731       : m_commandBuffer(VK_NULL_HANDLE)
   37732     {}
   37733 
   37734     VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
   37735       : m_commandBuffer( commandBuffer )
   37736     {}
   37737 
   37738 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   37739     CommandBuffer & operator=(VkCommandBuffer commandBuffer)
   37740     {
   37741       m_commandBuffer = commandBuffer;
   37742       return *this;
   37743     }
   37744 #endif
   37745 
   37746     CommandBuffer & operator=( std::nullptr_t )
   37747     {
   37748       m_commandBuffer = VK_NULL_HANDLE;
   37749       return *this;
   37750     }
   37751 
   37752     bool operator==( CommandBuffer const & rhs ) const
   37753     {
   37754       return m_commandBuffer == rhs.m_commandBuffer;
   37755     }
   37756 
   37757     bool operator!=(CommandBuffer const & rhs ) const
   37758     {
   37759       return m_commandBuffer != rhs.m_commandBuffer;
   37760     }
   37761 
   37762     bool operator<(CommandBuffer const & rhs ) const
   37763     {
   37764       return m_commandBuffer < rhs.m_commandBuffer;
   37765     }
   37766 
   37767     template<typename Dispatch = DispatchLoaderStatic>
   37768     Result begin( const CommandBufferBeginInfo* pBeginInfo, Dispatch const &d = Dispatch() ) const;
   37769 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37770     template<typename Dispatch = DispatchLoaderStatic>
   37771     ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d = Dispatch() ) const;
   37772 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37773 
   37774 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37775     template<typename Dispatch = DispatchLoaderStatic>
   37776     Result end(Dispatch const &d = Dispatch() ) const;
   37777 #else
   37778     template<typename Dispatch = DispatchLoaderStatic>
   37779     ResultValueType<void>::type end(Dispatch const &d = Dispatch() ) const;
   37780 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37781 
   37782 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37783     template<typename Dispatch = DispatchLoaderStatic>
   37784     Result reset( CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const;
   37785 #else
   37786     template<typename Dispatch = DispatchLoaderStatic>
   37787     ResultValueType<void>::type reset( CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const;
   37788 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37789 
   37790     template<typename Dispatch = DispatchLoaderStatic>
   37791     void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d = Dispatch() ) const;
   37792 
   37793     template<typename Dispatch = DispatchLoaderStatic>
   37794     void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports, Dispatch const &d = Dispatch() ) const;
   37795 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37796     template<typename Dispatch = DispatchLoaderStatic>
   37797     void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports, Dispatch const &d = Dispatch() ) const;
   37798 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37799 
   37800     template<typename Dispatch = DispatchLoaderStatic>
   37801     void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors, Dispatch const &d = Dispatch() ) const;
   37802 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37803     template<typename Dispatch = DispatchLoaderStatic>
   37804     void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors, Dispatch const &d = Dispatch() ) const;
   37805 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37806 
   37807     template<typename Dispatch = DispatchLoaderStatic>
   37808     void setLineWidth( float lineWidth, Dispatch const &d = Dispatch() ) const;
   37809 
   37810     template<typename Dispatch = DispatchLoaderStatic>
   37811     void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d = Dispatch() ) const;
   37812 
   37813     template<typename Dispatch = DispatchLoaderStatic>
   37814     void setBlendConstants( const float blendConstants[4], Dispatch const &d = Dispatch() ) const;
   37815 
   37816     template<typename Dispatch = DispatchLoaderStatic>
   37817     void setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d = Dispatch() ) const;
   37818 
   37819     template<typename Dispatch = DispatchLoaderStatic>
   37820     void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d = Dispatch() ) const;
   37821 
   37822     template<typename Dispatch = DispatchLoaderStatic>
   37823     void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d = Dispatch() ) const;
   37824 
   37825     template<typename Dispatch = DispatchLoaderStatic>
   37826     void setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d = Dispatch() ) const;
   37827 
   37828     template<typename Dispatch = DispatchLoaderStatic>
   37829     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;
   37830 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37831     template<typename Dispatch = DispatchLoaderStatic>
   37832     void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets, Dispatch const &d = Dispatch() ) const;
   37833 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37834 
   37835     template<typename Dispatch = DispatchLoaderStatic>
   37836     void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d = Dispatch() ) const;
   37837 
   37838     template<typename Dispatch = DispatchLoaderStatic>
   37839     void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, Dispatch const &d = Dispatch() ) const;
   37840 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37841     template<typename Dispatch = DispatchLoaderStatic>
   37842     void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, Dispatch const &d = Dispatch() ) const;
   37843 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37844 
   37845     template<typename Dispatch = DispatchLoaderStatic>
   37846     void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const;
   37847 
   37848     template<typename Dispatch = DispatchLoaderStatic>
   37849     void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const;
   37850 
   37851     template<typename Dispatch = DispatchLoaderStatic>
   37852     void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   37853 
   37854     template<typename Dispatch = DispatchLoaderStatic>
   37855     void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   37856 
   37857     template<typename Dispatch = DispatchLoaderStatic>
   37858     void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const;
   37859 
   37860     template<typename Dispatch = DispatchLoaderStatic>
   37861     void dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d = Dispatch() ) const;
   37862 
   37863     template<typename Dispatch = DispatchLoaderStatic>
   37864     void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions, Dispatch const &d = Dispatch() ) const;
   37865 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37866     template<typename Dispatch = DispatchLoaderStatic>
   37867     void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions, Dispatch const &d = Dispatch() ) const;
   37868 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37869 
   37870     template<typename Dispatch = DispatchLoaderStatic>
   37871     void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
   37872 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37873     template<typename Dispatch = DispatchLoaderStatic>
   37874     void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions, Dispatch const &d = Dispatch() ) const;
   37875 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37876 
   37877     template<typename Dispatch = DispatchLoaderStatic>
   37878     void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter, Dispatch const &d = Dispatch() ) const;
   37879 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37880     template<typename Dispatch = DispatchLoaderStatic>
   37881     void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter, Dispatch const &d = Dispatch() ) const;
   37882 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37883 
   37884     template<typename Dispatch = DispatchLoaderStatic>
   37885     void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
   37886 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37887     template<typename Dispatch = DispatchLoaderStatic>
   37888     void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d = Dispatch() ) const;
   37889 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37890 
   37891     template<typename Dispatch = DispatchLoaderStatic>
   37892     void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
   37893 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37894     template<typename Dispatch = DispatchLoaderStatic>
   37895     void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d = Dispatch() ) const;
   37896 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37897 
   37898     template<typename Dispatch = DispatchLoaderStatic>
   37899     void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData, Dispatch const &d = Dispatch() ) const;
   37900 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37901     template <typename T, typename Dispatch = DispatchLoaderStatic>
   37902     void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data, Dispatch const &d = Dispatch() ) const;
   37903 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37904 
   37905     template<typename Dispatch = DispatchLoaderStatic>
   37906     void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d = Dispatch() ) const;
   37907 
   37908     template<typename Dispatch = DispatchLoaderStatic>
   37909     void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const;
   37910 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37911     template<typename Dispatch = DispatchLoaderStatic>
   37912     void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d = Dispatch() ) const;
   37913 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37914 
   37915     template<typename Dispatch = DispatchLoaderStatic>
   37916     void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const;
   37917 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37918     template<typename Dispatch = DispatchLoaderStatic>
   37919     void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d = Dispatch() ) const;
   37920 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37921 
   37922     template<typename Dispatch = DispatchLoaderStatic>
   37923     void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects, Dispatch const &d = Dispatch() ) const;
   37924 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37925     template<typename Dispatch = DispatchLoaderStatic>
   37926     void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects, Dispatch const &d = Dispatch() ) const;
   37927 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37928 
   37929     template<typename Dispatch = DispatchLoaderStatic>
   37930     void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions, Dispatch const &d = Dispatch() ) const;
   37931 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37932     template<typename Dispatch = DispatchLoaderStatic>
   37933     void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions, Dispatch const &d = Dispatch() ) const;
   37934 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37935 
   37936     template<typename Dispatch = DispatchLoaderStatic>
   37937     void setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const;
   37938 
   37939     template<typename Dispatch = DispatchLoaderStatic>
   37940     void resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const;
   37941 
   37942     template<typename Dispatch = DispatchLoaderStatic>
   37943     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;
   37944 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37945     template<typename Dispatch = DispatchLoaderStatic>
   37946     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;
   37947 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37948 
   37949     template<typename Dispatch = DispatchLoaderStatic>
   37950     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;
   37951 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37952     template<typename Dispatch = DispatchLoaderStatic>
   37953     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;
   37954 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37955 
   37956     template<typename Dispatch = DispatchLoaderStatic>
   37957     void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d = Dispatch() ) const;
   37958 
   37959     template<typename Dispatch = DispatchLoaderStatic>
   37960     void endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const;
   37961 
   37962     template<typename Dispatch = DispatchLoaderStatic>
   37963     void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d = Dispatch() ) const;
   37964 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37965     template<typename Dispatch = DispatchLoaderStatic>
   37966     void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d = Dispatch() ) const;
   37967 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37968 
   37969     template<typename Dispatch = DispatchLoaderStatic>
   37970     void endConditionalRenderingEXT(Dispatch const &d = Dispatch() ) const;
   37971 
   37972     template<typename Dispatch = DispatchLoaderStatic>
   37973     void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d = Dispatch() ) const;
   37974 
   37975     template<typename Dispatch = DispatchLoaderStatic>
   37976     void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const;
   37977 
   37978     template<typename Dispatch = DispatchLoaderStatic>
   37979     void copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
   37980 
   37981     template<typename Dispatch = DispatchLoaderStatic>
   37982     void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d = Dispatch() ) const;
   37983 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37984     template <typename T, typename Dispatch = DispatchLoaderStatic>
   37985     void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values, Dispatch const &d = Dispatch() ) const;
   37986 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37987 
   37988     template<typename Dispatch = DispatchLoaderStatic>
   37989     void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents, Dispatch const &d = Dispatch() ) const;
   37990 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   37991     template<typename Dispatch = DispatchLoaderStatic>
   37992     void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents, Dispatch const &d = Dispatch() ) const;
   37993 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   37994 
   37995     template<typename Dispatch = DispatchLoaderStatic>
   37996     void nextSubpass( SubpassContents contents, Dispatch const &d = Dispatch() ) const;
   37997 
   37998     template<typename Dispatch = DispatchLoaderStatic>
   37999     void endRenderPass(Dispatch const &d = Dispatch() ) const;
   38000 
   38001     template<typename Dispatch = DispatchLoaderStatic>
   38002     void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
   38003 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38004     template<typename Dispatch = DispatchLoaderStatic>
   38005     void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
   38006 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38007 
   38008     template<typename Dispatch = DispatchLoaderStatic>
   38009     void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const;
   38010 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38011     template<typename Dispatch = DispatchLoaderStatic>
   38012     void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const;
   38013 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38014 
   38015     template<typename Dispatch = DispatchLoaderStatic>
   38016     void debugMarkerEndEXT(Dispatch const &d = Dispatch() ) const;
   38017 
   38018     template<typename Dispatch = DispatchLoaderStatic>
   38019     void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const;
   38020 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38021     template<typename Dispatch = DispatchLoaderStatic>
   38022     void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const;
   38023 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38024 
   38025     template<typename Dispatch = DispatchLoaderStatic>
   38026     void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38027 
   38028     template<typename Dispatch = DispatchLoaderStatic>
   38029     void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38030 
   38031     template<typename Dispatch = DispatchLoaderStatic>
   38032     void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d = Dispatch() ) const;
   38033 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38034     template<typename Dispatch = DispatchLoaderStatic>
   38035     void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d = Dispatch() ) const;
   38036 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38037 
   38038     template<typename Dispatch = DispatchLoaderStatic>
   38039     void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d = Dispatch() ) const;
   38040 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38041     template<typename Dispatch = DispatchLoaderStatic>
   38042     void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d = Dispatch() ) const;
   38043 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38044 
   38045     template<typename Dispatch = DispatchLoaderStatic>
   38046     void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, Dispatch const &d = Dispatch() ) const;
   38047 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38048     template<typename Dispatch = DispatchLoaderStatic>
   38049     void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites, Dispatch const &d = Dispatch() ) const;
   38050 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38051 
   38052     template<typename Dispatch = DispatchLoaderStatic>
   38053     void setDeviceMask( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const;
   38054 
   38055     template<typename Dispatch = DispatchLoaderStatic>
   38056     void setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const;
   38057 
   38058     template<typename Dispatch = DispatchLoaderStatic>
   38059     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;
   38060 
   38061     template<typename Dispatch = DispatchLoaderStatic>
   38062     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;
   38063 
   38064     template<typename Dispatch = DispatchLoaderStatic>
   38065     void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d = Dispatch() ) const;
   38066 
   38067     template<typename Dispatch = DispatchLoaderStatic>
   38068     void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings, Dispatch const &d = Dispatch() ) const;
   38069 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38070     template<typename Dispatch = DispatchLoaderStatic>
   38071     void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings, Dispatch const &d = Dispatch() ) const;
   38072 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38073 
   38074     template<typename Dispatch = DispatchLoaderStatic>
   38075     void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles, Dispatch const &d = Dispatch() ) const;
   38076 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38077     template<typename Dispatch = DispatchLoaderStatic>
   38078     void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles, Dispatch const &d = Dispatch() ) const;
   38079 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38080 
   38081     template<typename Dispatch = DispatchLoaderStatic>
   38082     void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d = Dispatch() ) const;
   38083 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38084     template<typename Dispatch = DispatchLoaderStatic>
   38085     void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d = Dispatch() ) const;
   38086 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38087 
   38088     template<typename Dispatch = DispatchLoaderStatic>
   38089     void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
   38090 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38091     template<typename Dispatch = DispatchLoaderStatic>
   38092     void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
   38093 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38094 
   38095     template<typename Dispatch = DispatchLoaderStatic>
   38096     void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const;
   38097 
   38098     template<typename Dispatch = DispatchLoaderStatic>
   38099     void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
   38100 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38101     template<typename Dispatch = DispatchLoaderStatic>
   38102     void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
   38103 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38104 
   38105     template<typename Dispatch = DispatchLoaderStatic>
   38106     void writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d = Dispatch() ) const;
   38107 
   38108     template<typename Dispatch = DispatchLoaderStatic>
   38109     void beginRenderPass2KHR( const RenderPassBeginInfo* pRenderPassBegin, const SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d = Dispatch() ) const;
   38110 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38111     template<typename Dispatch = DispatchLoaderStatic>
   38112     void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d = Dispatch() ) const;
   38113 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38114 
   38115     template<typename Dispatch = DispatchLoaderStatic>
   38116     void nextSubpass2KHR( const SubpassBeginInfoKHR* pSubpassBeginInfo, const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const;
   38117 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38118     template<typename Dispatch = DispatchLoaderStatic>
   38119     void nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const;
   38120 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38121 
   38122     template<typename Dispatch = DispatchLoaderStatic>
   38123     void endRenderPass2KHR( const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const;
   38124 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38125     template<typename Dispatch = DispatchLoaderStatic>
   38126     void endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const;
   38127 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38128 
   38129     template<typename Dispatch = DispatchLoaderStatic>
   38130     void drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38131 
   38132     template<typename Dispatch = DispatchLoaderStatic>
   38133     void drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38134 
   38135     template<typename Dispatch = DispatchLoaderStatic>
   38136     void setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d = Dispatch() ) const;
   38137 
   38138     template<typename Dispatch = DispatchLoaderStatic>
   38139     void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, const DeviceSize* pSizes, Dispatch const &d = Dispatch() ) const;
   38140 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38141     template<typename Dispatch = DispatchLoaderStatic>
   38142     void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, ArrayProxy<const DeviceSize> sizes, Dispatch const &d = Dispatch() ) const;
   38143 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38144 
   38145     template<typename Dispatch = DispatchLoaderStatic>
   38146     void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const Buffer* pCounterBuffers, const DeviceSize* pCounterBufferOffsets, Dispatch const &d = Dispatch() ) const;
   38147 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38148     template<typename Dispatch = DispatchLoaderStatic>
   38149     void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy<const Buffer> counterBuffers, ArrayProxy<const DeviceSize> counterBufferOffsets, Dispatch const &d = Dispatch() ) const;
   38150 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38151 
   38152     template<typename Dispatch = DispatchLoaderStatic>
   38153     void endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const Buffer* pCounterBuffers, const DeviceSize* pCounterBufferOffsets, Dispatch const &d = Dispatch() ) const;
   38154 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38155     template<typename Dispatch = DispatchLoaderStatic>
   38156     void endTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy<const Buffer> counterBuffers, ArrayProxy<const DeviceSize> counterBufferOffsets, Dispatch const &d = Dispatch() ) const;
   38157 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38158 
   38159     template<typename Dispatch = DispatchLoaderStatic>
   38160     void beginQueryIndexedEXT( QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index, Dispatch const &d = Dispatch() ) const;
   38161 
   38162     template<typename Dispatch = DispatchLoaderStatic>
   38163     void endQueryIndexedEXT( QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d = Dispatch() ) const;
   38164 
   38165     template<typename Dispatch = DispatchLoaderStatic>
   38166     void drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, Buffer counterBuffer, DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d = Dispatch() ) const;
   38167 
   38168     template<typename Dispatch = DispatchLoaderStatic>
   38169     void setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const Rect2D* pExclusiveScissors, Dispatch const &d = Dispatch() ) const;
   38170 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38171     template<typename Dispatch = DispatchLoaderStatic>
   38172     void setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy<const Rect2D> exclusiveScissors, Dispatch const &d = Dispatch() ) const;
   38173 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38174 
   38175     template<typename Dispatch = DispatchLoaderStatic>
   38176     void bindShadingRateImageNV( ImageView imageView, ImageLayout imageLayout, Dispatch const &d = Dispatch() ) const;
   38177 
   38178     template<typename Dispatch = DispatchLoaderStatic>
   38179     void setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const &d = Dispatch() ) const;
   38180 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38181     template<typename Dispatch = DispatchLoaderStatic>
   38182     void setViewportShadingRatePaletteNV( uint32_t firstViewport, ArrayProxy<const ShadingRatePaletteNV> shadingRatePalettes, Dispatch const &d = Dispatch() ) const;
   38183 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38184 
   38185     template<typename Dispatch = DispatchLoaderStatic>
   38186     void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const &d = Dispatch() ) const;
   38187 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38188     template<typename Dispatch = DispatchLoaderStatic>
   38189     void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy<const CoarseSampleOrderCustomNV> customSampleOrders, Dispatch const &d = Dispatch() ) const;
   38190 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38191 
   38192     template<typename Dispatch = DispatchLoaderStatic>
   38193     void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d = Dispatch() ) const;
   38194 
   38195     template<typename Dispatch = DispatchLoaderStatic>
   38196     void drawMeshTasksIndirectNV( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38197 
   38198     template<typename Dispatch = DispatchLoaderStatic>
   38199     void drawMeshTasksIndirectCountNV( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
   38200 
   38201     template<typename Dispatch = DispatchLoaderStatic>
   38202     void copyAccelerationStructureNV( AccelerationStructureNV dst, AccelerationStructureNV src, CopyAccelerationStructureModeNV mode, Dispatch const &d = Dispatch() ) const;
   38203 
   38204     template<typename Dispatch = DispatchLoaderStatic>
   38205     void writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const AccelerationStructureNV* pAccelerationStructures, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const &d = Dispatch() ) const;
   38206 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38207     template<typename Dispatch = DispatchLoaderStatic>
   38208     void writeAccelerationStructuresPropertiesNV( ArrayProxy<const AccelerationStructureNV> accelerationStructures, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const &d = Dispatch() ) const;
   38209 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38210 
   38211     template<typename Dispatch = DispatchLoaderStatic>
   38212     void buildAccelerationStructureNV( const AccelerationStructureInfoNV* pInfo, Buffer instanceData, DeviceSize instanceOffset, Bool32 update, AccelerationStructureNV dst, AccelerationStructureNV src, Buffer scratch, DeviceSize scratchOffset, Dispatch const &d = Dispatch() ) const;
   38213 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38214     template<typename Dispatch = DispatchLoaderStatic>
   38215     void buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, Buffer instanceData, DeviceSize instanceOffset, Bool32 update, AccelerationStructureNV dst, AccelerationStructureNV src, Buffer scratch, DeviceSize scratchOffset, Dispatch const &d = Dispatch() ) const;
   38216 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38217 
   38218     template<typename Dispatch = DispatchLoaderStatic>
   38219     void traceRaysNV( Buffer raygenShaderBindingTableBuffer, DeviceSize raygenShaderBindingOffset, Buffer missShaderBindingTableBuffer, DeviceSize missShaderBindingOffset, DeviceSize missShaderBindingStride, Buffer hitShaderBindingTableBuffer, DeviceSize hitShaderBindingOffset, DeviceSize hitShaderBindingStride, Buffer callableShaderBindingTableBuffer, DeviceSize callableShaderBindingOffset, DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d = Dispatch() ) const;
   38220 
   38221 
   38222 
   38223     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
   38224     {
   38225       return m_commandBuffer;
   38226     }
   38227 
   38228     explicit operator bool() const
   38229     {
   38230       return m_commandBuffer != VK_NULL_HANDLE;
   38231     }
   38232 
   38233     bool operator!() const
   38234     {
   38235       return m_commandBuffer == VK_NULL_HANDLE;
   38236     }
   38237 
   38238   private:
   38239     VkCommandBuffer m_commandBuffer;
   38240   };
   38241 
   38242   static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
   38243 
   38244   template<typename Dispatch>
   38245   VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo, Dispatch const &d) const
   38246   {
   38247     return static_cast<Result>( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
   38248   }
   38249 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38250   template<typename Dispatch>
   38251   VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d ) const
   38252   {
   38253     Result result = static_cast<Result>( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
   38254     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::begin" );
   38255   }
   38256 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38257 
   38258 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38259   template<typename Dispatch>
   38260   VULKAN_HPP_INLINE Result CommandBuffer::end(Dispatch const &d) const
   38261   {
   38262     return static_cast<Result>( d.vkEndCommandBuffer( m_commandBuffer ) );
   38263   }
   38264 #else
   38265   template<typename Dispatch>
   38266   VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end(Dispatch const &d ) const
   38267   {
   38268     Result result = static_cast<Result>( d.vkEndCommandBuffer( m_commandBuffer ) );
   38269     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::end" );
   38270   }
   38271 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38272 
   38273 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38274   template<typename Dispatch>
   38275   VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags, Dispatch const &d) const
   38276   {
   38277     return static_cast<Result>( d.vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
   38278   }
   38279 #else
   38280   template<typename Dispatch>
   38281   VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags, Dispatch const &d ) const
   38282   {
   38283     Result result = static_cast<Result>( d.vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
   38284     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::reset" );
   38285   }
   38286 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38287 
   38288 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38289   template<typename Dispatch>
   38290   VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d) const
   38291   {
   38292     d.vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
   38293   }
   38294 #else
   38295   template<typename Dispatch>
   38296   VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d ) const
   38297   {
   38298     d.vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
   38299   }
   38300 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38301 
   38302   template<typename Dispatch>
   38303   VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports, Dispatch const &d) const
   38304   {
   38305     d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
   38306   }
   38307 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38308   template<typename Dispatch>
   38309   VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports, Dispatch const &d ) const
   38310   {
   38311     d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
   38312   }
   38313 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38314 
   38315   template<typename Dispatch>
   38316   VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors, Dispatch const &d) const
   38317   {
   38318     d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
   38319   }
   38320 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38321   template<typename Dispatch>
   38322   VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors, Dispatch const &d ) const
   38323   {
   38324     d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
   38325   }
   38326 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38327 
   38328 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38329   template<typename Dispatch>
   38330   VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d) const
   38331   {
   38332     d.vkCmdSetLineWidth( m_commandBuffer, lineWidth );
   38333   }
   38334 #else
   38335   template<typename Dispatch>
   38336   VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d ) const
   38337   {
   38338     d.vkCmdSetLineWidth( m_commandBuffer, lineWidth );
   38339   }
   38340 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38341 
   38342 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38343   template<typename Dispatch>
   38344   VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d) const
   38345   {
   38346     d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
   38347   }
   38348 #else
   38349   template<typename Dispatch>
   38350   VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d ) const
   38351   {
   38352     d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
   38353   }
   38354 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38355 
   38356 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38357   template<typename Dispatch>
   38358   VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d) const
   38359   {
   38360     d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
   38361   }
   38362 #else
   38363   template<typename Dispatch>
   38364   VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d ) const
   38365   {
   38366     d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
   38367   }
   38368 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38369 
   38370 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38371   template<typename Dispatch>
   38372   VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d) const
   38373   {
   38374     d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
   38375   }
   38376 #else
   38377   template<typename Dispatch>
   38378   VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d ) const
   38379   {
   38380     d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
   38381   }
   38382 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38383 
   38384 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38385   template<typename Dispatch>
   38386   VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d) const
   38387   {
   38388     d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
   38389   }
   38390 #else
   38391   template<typename Dispatch>
   38392   VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d ) const
   38393   {
   38394     d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
   38395   }
   38396 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38397 
   38398 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38399   template<typename Dispatch>
   38400   VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d) const
   38401   {
   38402     d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
   38403   }
   38404 #else
   38405   template<typename Dispatch>
   38406   VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d ) const
   38407   {
   38408     d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
   38409   }
   38410 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38411 
   38412 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38413   template<typename Dispatch>
   38414   VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d) const
   38415   {
   38416     d.vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
   38417   }
   38418 #else
   38419   template<typename Dispatch>
   38420   VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d ) const
   38421   {
   38422     d.vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
   38423   }
   38424 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38425 
   38426   template<typename Dispatch>
   38427   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
   38428   {
   38429     d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
   38430   }
   38431 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38432   template<typename Dispatch>
   38433   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
   38434   {
   38435     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() );
   38436   }
   38437 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38438 
   38439 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38440   template<typename Dispatch>
   38441   VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d) const
   38442   {
   38443     d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
   38444   }
   38445 #else
   38446   template<typename Dispatch>
   38447   VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d ) const
   38448   {
   38449     d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
   38450   }
   38451 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38452 
   38453   template<typename Dispatch>
   38454   VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, Dispatch const &d) const
   38455   {
   38456     d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
   38457   }
   38458 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38459   template<typename Dispatch>
   38460   VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, Dispatch const &d ) const
   38461   {
   38462 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   38463     VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
   38464 #else
   38465     if ( buffers.size() != offsets.size() )
   38466     {
   38467       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
   38468     }
   38469 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   38470     d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
   38471   }
   38472 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38473 
   38474 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38475   template<typename Dispatch>
   38476   VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d) const
   38477   {
   38478     d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
   38479   }
   38480 #else
   38481   template<typename Dispatch>
   38482   VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d ) const
   38483   {
   38484     d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
   38485   }
   38486 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38487 
   38488 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38489   template<typename Dispatch>
   38490   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
   38491   {
   38492     d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
   38493   }
   38494 #else
   38495   template<typename Dispatch>
   38496   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
   38497   {
   38498     d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
   38499   }
   38500 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38501 
   38502 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38503   template<typename Dispatch>
   38504   VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const
   38505   {
   38506     d.vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   38507   }
   38508 #else
   38509   template<typename Dispatch>
   38510   VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const
   38511   {
   38512     d.vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   38513   }
   38514 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38515 
   38516 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38517   template<typename Dispatch>
   38518   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const
   38519   {
   38520     d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   38521   }
   38522 #else
   38523   template<typename Dispatch>
   38524   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const
   38525   {
   38526     d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   38527   }
   38528 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38529 
   38530 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38531   template<typename Dispatch>
   38532   VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const
   38533   {
   38534     d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
   38535   }
   38536 #else
   38537   template<typename Dispatch>
   38538   VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const
   38539   {
   38540     d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
   38541   }
   38542 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38543 
   38544 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38545   template<typename Dispatch>
   38546   VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d) const
   38547   {
   38548     d.vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
   38549   }
   38550 #else
   38551   template<typename Dispatch>
   38552   VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d ) const
   38553   {
   38554     d.vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
   38555   }
   38556 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38557 
   38558   template<typename Dispatch>
   38559   VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions, Dispatch const &d) const
   38560   {
   38561     d.vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
   38562   }
   38563 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38564   template<typename Dispatch>
   38565   VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions, Dispatch const &d ) const
   38566   {
   38567     d.vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
   38568   }
   38569 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38570 
   38571   template<typename Dispatch>
   38572   VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions, Dispatch const &d) const
   38573   {
   38574     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 ) );
   38575   }
   38576 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38577   template<typename Dispatch>
   38578   VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions, Dispatch const &d ) const
   38579   {
   38580     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() ) );
   38581   }
   38582 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38583 
   38584   template<typename Dispatch>
   38585   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
   38586   {
   38587     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 ) );
   38588   }
   38589 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38590   template<typename Dispatch>
   38591   VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter, Dispatch const &d ) const
   38592   {
   38593     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 ) );
   38594   }
   38595 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38596 
   38597   template<typename Dispatch>
   38598   VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d) const
   38599   {
   38600     d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
   38601   }
   38602 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38603   template<typename Dispatch>
   38604   VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d ) const
   38605   {
   38606     d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
   38607   }
   38608 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38609 
   38610   template<typename Dispatch>
   38611   VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d) const
   38612   {
   38613     d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
   38614   }
   38615 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38616   template<typename Dispatch>
   38617   VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d ) const
   38618   {
   38619     d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
   38620   }
   38621 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38622 
   38623   template<typename Dispatch>
   38624   VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData, Dispatch const &d) const
   38625   {
   38626     d.vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
   38627   }
   38628 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38629   template <typename T, typename Dispatch>
   38630   VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data, Dispatch const &d ) const
   38631   {
   38632     d.vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
   38633   }
   38634 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38635 
   38636 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38637   template<typename Dispatch>
   38638   VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d) const
   38639   {
   38640     d.vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
   38641   }
   38642 #else
   38643   template<typename Dispatch>
   38644   VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d ) const
   38645   {
   38646     d.vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
   38647   }
   38648 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38649 
   38650   template<typename Dispatch>
   38651   VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d) const
   38652   {
   38653     d.vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
   38654   }
   38655 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38656   template<typename Dispatch>
   38657   VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d ) const
   38658   {
   38659     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() ) );
   38660   }
   38661 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38662 
   38663   template<typename Dispatch>
   38664   VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d) const
   38665   {
   38666     d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
   38667   }
   38668 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38669   template<typename Dispatch>
   38670   VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d ) const
   38671   {
   38672     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() ) );
   38673   }
   38674 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38675 
   38676   template<typename Dispatch>
   38677   VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects, Dispatch const &d) const
   38678   {
   38679     d.vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
   38680   }
   38681 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38682   template<typename Dispatch>
   38683   VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects, Dispatch const &d ) const
   38684   {
   38685     d.vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
   38686   }
   38687 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38688 
   38689   template<typename Dispatch>
   38690   VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions, Dispatch const &d) const
   38691   {
   38692     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 ) );
   38693   }
   38694 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38695   template<typename Dispatch>
   38696   VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions, Dispatch const &d ) const
   38697   {
   38698     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() ) );
   38699   }
   38700 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38701 
   38702 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38703   template<typename Dispatch>
   38704   VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d) const
   38705   {
   38706     d.vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
   38707   }
   38708 #else
   38709   template<typename Dispatch>
   38710   VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d ) const
   38711   {
   38712     d.vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
   38713   }
   38714 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38715 
   38716 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38717   template<typename Dispatch>
   38718   VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d) const
   38719   {
   38720     d.vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
   38721   }
   38722 #else
   38723   template<typename Dispatch>
   38724   VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d ) const
   38725   {
   38726     d.vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
   38727   }
   38728 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38729 
   38730   template<typename Dispatch>
   38731   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
   38732   {
   38733     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 ) );
   38734   }
   38735 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38736   template<typename Dispatch>
   38737   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
   38738   {
   38739     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() ) );
   38740   }
   38741 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38742 
   38743   template<typename Dispatch>
   38744   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
   38745   {
   38746     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 ) );
   38747   }
   38748 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38749   template<typename Dispatch>
   38750   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
   38751   {
   38752     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() ) );
   38753   }
   38754 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38755 
   38756 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38757   template<typename Dispatch>
   38758   VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d) const
   38759   {
   38760     d.vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
   38761   }
   38762 #else
   38763   template<typename Dispatch>
   38764   VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d ) const
   38765   {
   38766     d.vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
   38767   }
   38768 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38769 
   38770 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38771   template<typename Dispatch>
   38772   VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d) const
   38773   {
   38774     d.vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
   38775   }
   38776 #else
   38777   template<typename Dispatch>
   38778   VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d ) const
   38779   {
   38780     d.vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
   38781   }
   38782 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38783 
   38784   template<typename Dispatch>
   38785   VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d) const
   38786   {
   38787     d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>( pConditionalRenderingBegin ) );
   38788   }
   38789 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38790   template<typename Dispatch>
   38791   VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d ) const
   38792   {
   38793     d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>( &conditionalRenderingBegin ) );
   38794   }
   38795 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38796 
   38797 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38798   template<typename Dispatch>
   38799   VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d) const
   38800   {
   38801     d.vkCmdEndConditionalRenderingEXT( m_commandBuffer );
   38802   }
   38803 #else
   38804   template<typename Dispatch>
   38805   VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d ) const
   38806   {
   38807     d.vkCmdEndConditionalRenderingEXT( m_commandBuffer );
   38808   }
   38809 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38810 
   38811 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38812   template<typename Dispatch>
   38813   VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d) const
   38814   {
   38815     d.vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
   38816   }
   38817 #else
   38818   template<typename Dispatch>
   38819   VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d ) const
   38820   {
   38821     d.vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
   38822   }
   38823 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38824 
   38825 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38826   template<typename Dispatch>
   38827   VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d) const
   38828   {
   38829     d.vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
   38830   }
   38831 #else
   38832   template<typename Dispatch>
   38833   VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d ) const
   38834   {
   38835     d.vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
   38836   }
   38837 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38838 
   38839 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38840   template<typename Dispatch>
   38841   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
   38842   {
   38843     d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
   38844   }
   38845 #else
   38846   template<typename Dispatch>
   38847   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
   38848   {
   38849     d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
   38850   }
   38851 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38852 
   38853   template<typename Dispatch>
   38854   VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d) const
   38855   {
   38856     d.vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
   38857   }
   38858 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38859   template <typename T, typename Dispatch>
   38860   VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values, Dispatch const &d ) const
   38861   {
   38862     d.vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
   38863   }
   38864 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38865 
   38866   template<typename Dispatch>
   38867   VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents, Dispatch const &d) const
   38868   {
   38869     d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
   38870   }
   38871 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38872   template<typename Dispatch>
   38873   VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents, Dispatch const &d ) const
   38874   {
   38875     d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
   38876   }
   38877 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38878 
   38879 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38880   template<typename Dispatch>
   38881   VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents, Dispatch const &d) const
   38882   {
   38883     d.vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
   38884   }
   38885 #else
   38886   template<typename Dispatch>
   38887   VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents, Dispatch const &d ) const
   38888   {
   38889     d.vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
   38890   }
   38891 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38892 
   38893 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38894   template<typename Dispatch>
   38895   VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d) const
   38896   {
   38897     d.vkCmdEndRenderPass( m_commandBuffer );
   38898   }
   38899 #else
   38900   template<typename Dispatch>
   38901   VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d ) const
   38902   {
   38903     d.vkCmdEndRenderPass( m_commandBuffer );
   38904   }
   38905 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38906 
   38907   template<typename Dispatch>
   38908   VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
   38909   {
   38910     d.vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
   38911   }
   38912 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38913   template<typename Dispatch>
   38914   VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
   38915   {
   38916     d.vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
   38917   }
   38918 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38919 
   38920   template<typename Dispatch>
   38921   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const
   38922   {
   38923     d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
   38924   }
   38925 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38926   template<typename Dispatch>
   38927   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const
   38928   {
   38929     d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
   38930   }
   38931 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38932 
   38933 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38934   template<typename Dispatch>
   38935   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d) const
   38936   {
   38937     d.vkCmdDebugMarkerEndEXT( m_commandBuffer );
   38938   }
   38939 #else
   38940   template<typename Dispatch>
   38941   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d ) const
   38942   {
   38943     d.vkCmdDebugMarkerEndEXT( m_commandBuffer );
   38944   }
   38945 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38946 
   38947   template<typename Dispatch>
   38948   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const
   38949   {
   38950     d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
   38951   }
   38952 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38953   template<typename Dispatch>
   38954   VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const
   38955   {
   38956     d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
   38957   }
   38958 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38959 
   38960 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38961   template<typename Dispatch>
   38962   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
   38963   {
   38964     d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   38965   }
   38966 #else
   38967   template<typename Dispatch>
   38968   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
   38969   {
   38970     d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   38971   }
   38972 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38973 
   38974 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38975   template<typename Dispatch>
   38976   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
   38977   {
   38978     d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   38979   }
   38980 #else
   38981   template<typename Dispatch>
   38982   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
   38983   {
   38984     d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   38985   }
   38986 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   38987 
   38988   template<typename Dispatch>
   38989   VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d) const
   38990   {
   38991     d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
   38992   }
   38993 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   38994   template<typename Dispatch>
   38995   VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d ) const
   38996   {
   38997     d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
   38998   }
   38999 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39000 
   39001   template<typename Dispatch>
   39002   VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d) const
   39003   {
   39004     d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
   39005   }
   39006 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39007   template<typename Dispatch>
   39008   VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d ) const
   39009   {
   39010     d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
   39011   }
   39012 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39013 
   39014   template<typename Dispatch>
   39015   VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, Dispatch const &d) const
   39016   {
   39017     d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
   39018   }
   39019 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39020   template<typename Dispatch>
   39021   VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites, Dispatch const &d ) const
   39022   {
   39023     d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
   39024   }
   39025 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39026 
   39027 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39028   template<typename Dispatch>
   39029   VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d) const
   39030   {
   39031     d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask );
   39032   }
   39033 #else
   39034   template<typename Dispatch>
   39035   VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d ) const
   39036   {
   39037     d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask );
   39038   }
   39039 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39040 
   39041 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39042   template<typename Dispatch>
   39043   VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d) const
   39044   {
   39045     d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask );
   39046   }
   39047 #else
   39048   template<typename Dispatch>
   39049   VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d ) const
   39050   {
   39051     d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask );
   39052   }
   39053 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39054 
   39055 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39056   template<typename Dispatch>
   39057   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
   39058   {
   39059     d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
   39060   }
   39061 #else
   39062   template<typename Dispatch>
   39063   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
   39064   {
   39065     d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
   39066   }
   39067 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39068 
   39069 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39070   template<typename Dispatch>
   39071   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
   39072   {
   39073     d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
   39074   }
   39075 #else
   39076   template<typename Dispatch>
   39077   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
   39078   {
   39079     d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
   39080   }
   39081 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39082 
   39083 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39084   template<typename Dispatch>
   39085   VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d) const
   39086   {
   39087     d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
   39088   }
   39089 #else
   39090   template<typename Dispatch>
   39091   VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d ) const
   39092   {
   39093     d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
   39094   }
   39095 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39096 
   39097   template<typename Dispatch>
   39098   VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings, Dispatch const &d) const
   39099   {
   39100     d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
   39101   }
   39102 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39103   template<typename Dispatch>
   39104   VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings, Dispatch const &d ) const
   39105   {
   39106     d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
   39107   }
   39108 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39109 
   39110   template<typename Dispatch>
   39111   VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles, Dispatch const &d) const
   39112   {
   39113     d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
   39114   }
   39115 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39116   template<typename Dispatch>
   39117   VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles, Dispatch const &d ) const
   39118   {
   39119     d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
   39120   }
   39121 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39122 
   39123   template<typename Dispatch>
   39124   VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d) const
   39125   {
   39126     d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
   39127   }
   39128 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39129   template<typename Dispatch>
   39130   VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d ) const
   39131   {
   39132     d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
   39133   }
   39134 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39135 
   39136   template<typename Dispatch>
   39137   VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
   39138   {
   39139     d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
   39140   }
   39141 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39142   template<typename Dispatch>
   39143   VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
   39144   {
   39145     d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
   39146   }
   39147 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39148 
   39149 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39150   template<typename Dispatch>
   39151   VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d) const
   39152   {
   39153     d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer );
   39154   }
   39155 #else
   39156   template<typename Dispatch>
   39157   VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d ) const
   39158   {
   39159     d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer );
   39160   }
   39161 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39162 
   39163   template<typename Dispatch>
   39164   VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
   39165   {
   39166     d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
   39167   }
   39168 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39169   template<typename Dispatch>
   39170   VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
   39171   {
   39172     d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
   39173   }
   39174 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39175 
   39176 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39177   template<typename Dispatch>
   39178   VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d) const
   39179   {
   39180     d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkBuffer>( dstBuffer ), dstOffset, marker );
   39181   }
   39182 #else
   39183   template<typename Dispatch>
   39184   VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d ) const
   39185   {
   39186     d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkBuffer>( dstBuffer ), dstOffset, marker );
   39187   }
   39188 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39189 
   39190   template<typename Dispatch>
   39191   VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo* pRenderPassBegin, const SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d) const
   39192   {
   39193     d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), reinterpret_cast<const VkSubpassBeginInfoKHR*>( pSubpassBeginInfo ) );
   39194   }
   39195 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39196   template<typename Dispatch>
   39197   VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d ) const
   39198   {
   39199     d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), reinterpret_cast<const VkSubpassBeginInfoKHR*>( &subpassBeginInfo ) );
   39200   }
   39201 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39202 
   39203   template<typename Dispatch>
   39204   VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfoKHR* pSubpassBeginInfo, const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const
   39205   {
   39206     d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassBeginInfoKHR*>( pSubpassBeginInfo ), reinterpret_cast<const VkSubpassEndInfoKHR*>( pSubpassEndInfo ) );
   39207   }
   39208 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39209   template<typename Dispatch>
   39210   VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const
   39211   {
   39212     d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassBeginInfoKHR*>( &subpassBeginInfo ), reinterpret_cast<const VkSubpassEndInfoKHR*>( &subpassEndInfo ) );
   39213   }
   39214 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39215 
   39216   template<typename Dispatch>
   39217   VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const
   39218   {
   39219     d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassEndInfoKHR*>( pSubpassEndInfo ) );
   39220   }
   39221 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39222   template<typename Dispatch>
   39223   VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const
   39224   {
   39225     d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassEndInfoKHR*>( &subpassEndInfo ) );
   39226   }
   39227 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39228 
   39229 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39230   template<typename Dispatch>
   39231   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
   39232   {
   39233     d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39234   }
   39235 #else
   39236   template<typename Dispatch>
   39237   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
   39238   {
   39239     d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39240   }
   39241 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39242 
   39243 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39244   template<typename Dispatch>
   39245   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
   39246   {
   39247     d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39248   }
   39249 #else
   39250   template<typename Dispatch>
   39251   VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
   39252   {
   39253     d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39254   }
   39255 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39256 
   39257 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39258   template<typename Dispatch>
   39259   VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d) const
   39260   {
   39261     d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker );
   39262   }
   39263 #else
   39264   template<typename Dispatch>
   39265   VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d ) const
   39266   {
   39267     d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker );
   39268   }
   39269 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39270 
   39271   template<typename Dispatch>
   39272   VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, const DeviceSize* pSizes, Dispatch const &d) const
   39273   {
   39274     d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets, pSizes );
   39275   }
   39276 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39277   template<typename Dispatch>
   39278   VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, ArrayProxy<const DeviceSize> sizes, Dispatch const &d ) const
   39279   {
   39280 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   39281     VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
   39282 #else
   39283     if ( buffers.size() != offsets.size() )
   39284     {
   39285       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" );
   39286     }
   39287 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   39288 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   39289     VULKAN_HPP_ASSERT( buffers.size() == sizes.size() );
   39290 #else
   39291     if ( buffers.size() != sizes.size() )
   39292     {
   39293       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" );
   39294     }
   39295 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   39296 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   39297     VULKAN_HPP_ASSERT( offsets.size() == sizes.size() );
   39298 #else
   39299     if ( offsets.size() != sizes.size() )
   39300     {
   39301       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: offsets.size() != sizes.size()" );
   39302     }
   39303 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   39304     d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data(), sizes.data() );
   39305   }
   39306 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39307 
   39308   template<typename Dispatch>
   39309   VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const Buffer* pCounterBuffers, const DeviceSize* pCounterBufferOffsets, Dispatch const &d) const
   39310   {
   39311     d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast<const VkBuffer*>( pCounterBuffers ), pCounterBufferOffsets );
   39312   }
   39313 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39314   template<typename Dispatch>
   39315   VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy<const Buffer> counterBuffers, ArrayProxy<const DeviceSize> counterBufferOffsets, Dispatch const &d ) const
   39316   {
   39317 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   39318     VULKAN_HPP_ASSERT( counterBuffers.size() == counterBufferOffsets.size() );
   39319 #else
   39320     if ( counterBuffers.size() != counterBufferOffsets.size() )
   39321     {
   39322       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
   39323     }
   39324 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   39325     d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBuffers.size() , reinterpret_cast<const VkBuffer*>( counterBuffers.data() ), counterBufferOffsets.data() );
   39326   }
   39327 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39328 
   39329   template<typename Dispatch>
   39330   VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const Buffer* pCounterBuffers, const DeviceSize* pCounterBufferOffsets, Dispatch const &d) const
   39331   {
   39332     d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast<const VkBuffer*>( pCounterBuffers ), pCounterBufferOffsets );
   39333   }
   39334 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39335   template<typename Dispatch>
   39336   VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy<const Buffer> counterBuffers, ArrayProxy<const DeviceSize> counterBufferOffsets, Dispatch const &d ) const
   39337   {
   39338 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   39339     VULKAN_HPP_ASSERT( counterBuffers.size() == counterBufferOffsets.size() );
   39340 #else
   39341     if ( counterBuffers.size() != counterBufferOffsets.size() )
   39342     {
   39343       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
   39344     }
   39345 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   39346     d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBuffers.size() , reinterpret_cast<const VkBuffer*>( counterBuffers.data() ), counterBufferOffsets.data() );
   39347   }
   39348 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39349 
   39350 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39351   template<typename Dispatch>
   39352   VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index, Dispatch const &d) const
   39353   {
   39354     d.vkCmdBeginQueryIndexedEXT( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ), index );
   39355   }
   39356 #else
   39357   template<typename Dispatch>
   39358   VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index, Dispatch const &d ) const
   39359   {
   39360     d.vkCmdBeginQueryIndexedEXT( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ), index );
   39361   }
   39362 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39363 
   39364 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39365   template<typename Dispatch>
   39366   VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d) const
   39367   {
   39368     d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, index );
   39369   }
   39370 #else
   39371   template<typename Dispatch>
   39372   VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d ) const
   39373   {
   39374     d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, index );
   39375   }
   39376 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39377 
   39378 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39379   template<typename Dispatch>
   39380   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, Buffer counterBuffer, DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d) const
   39381   {
   39382     d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, instanceCount, firstInstance, static_cast<VkBuffer>( counterBuffer ), counterBufferOffset, counterOffset, vertexStride );
   39383   }
   39384 #else
   39385   template<typename Dispatch>
   39386   VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, Buffer counterBuffer, DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d ) const
   39387   {
   39388     d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, instanceCount, firstInstance, static_cast<VkBuffer>( counterBuffer ), counterBufferOffset, counterOffset, vertexStride );
   39389   }
   39390 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39391 
   39392   template<typename Dispatch>
   39393   VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const Rect2D* pExclusiveScissors, Dispatch const &d) const
   39394   {
   39395     d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissorCount, reinterpret_cast<const VkRect2D*>( pExclusiveScissors ) );
   39396   }
   39397 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39398   template<typename Dispatch>
   39399   VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy<const Rect2D> exclusiveScissors, Dispatch const &d ) const
   39400   {
   39401     d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissors.size() , reinterpret_cast<const VkRect2D*>( exclusiveScissors.data() ) );
   39402   }
   39403 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39404 
   39405 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39406   template<typename Dispatch>
   39407   VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( ImageView imageView, ImageLayout imageLayout, Dispatch const &d) const
   39408   {
   39409     d.vkCmdBindShadingRateImageNV( m_commandBuffer, static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
   39410   }
   39411 #else
   39412   template<typename Dispatch>
   39413   VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( ImageView imageView, ImageLayout imageLayout, Dispatch const &d ) const
   39414   {
   39415     d.vkCmdBindShadingRateImageNV( m_commandBuffer, static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
   39416   }
   39417 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39418 
   39419   template<typename Dispatch>
   39420   VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const &d) const
   39421   {
   39422     d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkShadingRatePaletteNV*>( pShadingRatePalettes ) );
   39423   }
   39424 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39425   template<typename Dispatch>
   39426   VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, ArrayProxy<const ShadingRatePaletteNV> shadingRatePalettes, Dispatch const &d ) const
   39427   {
   39428     d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, shadingRatePalettes.size() , reinterpret_cast<const VkShadingRatePaletteNV*>( shadingRatePalettes.data() ) );
   39429   }
   39430 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39431 
   39432   template<typename Dispatch>
   39433   VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const &d) const
   39434   {
   39435     d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ), customSampleOrderCount, reinterpret_cast<const VkCoarseSampleOrderCustomNV*>( pCustomSampleOrders ) );
   39436   }
   39437 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39438   template<typename Dispatch>
   39439   VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy<const CoarseSampleOrderCustomNV> customSampleOrders, Dispatch const &d ) const
   39440   {
   39441     d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ), customSampleOrders.size() , reinterpret_cast<const VkCoarseSampleOrderCustomNV*>( customSampleOrders.data() ) );
   39442   }
   39443 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39444 
   39445 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39446   template<typename Dispatch>
   39447   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d) const
   39448   {
   39449     d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask );
   39450   }
   39451 #else
   39452   template<typename Dispatch>
   39453   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d ) const
   39454   {
   39455     d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask );
   39456   }
   39457 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39458 
   39459 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39460   template<typename Dispatch>
   39461   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const
   39462   {
   39463     d.vkCmdDrawMeshTasksIndirectNV( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   39464   }
   39465 #else
   39466   template<typename Dispatch>
   39467   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const
   39468   {
   39469     d.vkCmdDrawMeshTasksIndirectNV( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
   39470   }
   39471 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39472 
   39473 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39474   template<typename Dispatch>
   39475   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
   39476   {
   39477     d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39478   }
   39479 #else
   39480   template<typename Dispatch>
   39481   VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
   39482   {
   39483     d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
   39484   }
   39485 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39486 
   39487 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39488   template<typename Dispatch>
   39489   VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( AccelerationStructureNV dst, AccelerationStructureNV src, CopyAccelerationStructureModeNV mode, Dispatch const &d) const
   39490   {
   39491     d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, static_cast<VkAccelerationStructureNV>( dst ), static_cast<VkAccelerationStructureNV>( src ), static_cast<VkCopyAccelerationStructureModeNV>( mode ) );
   39492   }
   39493 #else
   39494   template<typename Dispatch>
   39495   VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( AccelerationStructureNV dst, AccelerationStructureNV src, CopyAccelerationStructureModeNV mode, Dispatch const &d ) const
   39496   {
   39497     d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, static_cast<VkAccelerationStructureNV>( dst ), static_cast<VkAccelerationStructureNV>( src ), static_cast<VkCopyAccelerationStructureModeNV>( mode ) );
   39498   }
   39499 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39500 
   39501   template<typename Dispatch>
   39502   VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const AccelerationStructureNV* pAccelerationStructures, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const &d) const
   39503   {
   39504     d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructureCount, reinterpret_cast<const VkAccelerationStructureNV*>( pAccelerationStructures ), static_cast<VkQueryType>( queryType ), static_cast<VkQueryPool>( queryPool ), firstQuery );
   39505   }
   39506 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39507   template<typename Dispatch>
   39508   VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy<const AccelerationStructureNV> accelerationStructures, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const &d ) const
   39509   {
   39510     d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructures.size() , reinterpret_cast<const VkAccelerationStructureNV*>( accelerationStructures.data() ), static_cast<VkQueryType>( queryType ), static_cast<VkQueryPool>( queryPool ), firstQuery );
   39511   }
   39512 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39513 
   39514   template<typename Dispatch>
   39515   VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const AccelerationStructureInfoNV* pInfo, Buffer instanceData, DeviceSize instanceOffset, Bool32 update, AccelerationStructureNV dst, AccelerationStructureNV src, Buffer scratch, DeviceSize scratchOffset, Dispatch const &d) const
   39516   {
   39517     d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, reinterpret_cast<const VkAccelerationStructureInfoNV*>( pInfo ), static_cast<VkBuffer>( instanceData ), instanceOffset, update, static_cast<VkAccelerationStructureNV>( dst ), static_cast<VkAccelerationStructureNV>( src ), static_cast<VkBuffer>( scratch ), scratchOffset );
   39518   }
   39519 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39520   template<typename Dispatch>
   39521   VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, Buffer instanceData, DeviceSize instanceOffset, Bool32 update, AccelerationStructureNV dst, AccelerationStructureNV src, Buffer scratch, DeviceSize scratchOffset, Dispatch const &d ) const
   39522   {
   39523     d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, reinterpret_cast<const VkAccelerationStructureInfoNV*>( &info ), static_cast<VkBuffer>( instanceData ), instanceOffset, update, static_cast<VkAccelerationStructureNV>( dst ), static_cast<VkAccelerationStructureNV>( src ), static_cast<VkBuffer>( scratch ), scratchOffset );
   39524   }
   39525 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39526 
   39527 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39528   template<typename Dispatch>
   39529   VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( Buffer raygenShaderBindingTableBuffer, DeviceSize raygenShaderBindingOffset, Buffer missShaderBindingTableBuffer, DeviceSize missShaderBindingOffset, DeviceSize missShaderBindingStride, Buffer hitShaderBindingTableBuffer, DeviceSize hitShaderBindingOffset, DeviceSize hitShaderBindingStride, Buffer callableShaderBindingTableBuffer, DeviceSize callableShaderBindingOffset, DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d) const
   39530   {
   39531     d.vkCmdTraceRaysNV( m_commandBuffer, static_cast<VkBuffer>( raygenShaderBindingTableBuffer ), raygenShaderBindingOffset, static_cast<VkBuffer>( missShaderBindingTableBuffer ), missShaderBindingOffset, missShaderBindingStride, static_cast<VkBuffer>( hitShaderBindingTableBuffer ), hitShaderBindingOffset, hitShaderBindingStride, static_cast<VkBuffer>( callableShaderBindingTableBuffer ), callableShaderBindingOffset, callableShaderBindingStride, width, height, depth );
   39532   }
   39533 #else
   39534   template<typename Dispatch>
   39535   VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( Buffer raygenShaderBindingTableBuffer, DeviceSize raygenShaderBindingOffset, Buffer missShaderBindingTableBuffer, DeviceSize missShaderBindingOffset, DeviceSize missShaderBindingStride, Buffer hitShaderBindingTableBuffer, DeviceSize hitShaderBindingOffset, DeviceSize hitShaderBindingStride, Buffer callableShaderBindingTableBuffer, DeviceSize callableShaderBindingOffset, DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d ) const
   39536   {
   39537     d.vkCmdTraceRaysNV( m_commandBuffer, static_cast<VkBuffer>( raygenShaderBindingTableBuffer ), raygenShaderBindingOffset, static_cast<VkBuffer>( missShaderBindingTableBuffer ), missShaderBindingOffset, missShaderBindingStride, static_cast<VkBuffer>( hitShaderBindingTableBuffer ), hitShaderBindingOffset, hitShaderBindingStride, static_cast<VkBuffer>( callableShaderBindingTableBuffer ), callableShaderBindingOffset, callableShaderBindingStride, width, height, depth );
   39538   }
   39539 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39540 
   39541   struct SubmitInfo
   39542   {
   39543     SubmitInfo( uint32_t waitSemaphoreCount_ = 0,
   39544                 const Semaphore* pWaitSemaphores_ = nullptr,
   39545                 const PipelineStageFlags* pWaitDstStageMask_ = nullptr,
   39546                 uint32_t commandBufferCount_ = 0,
   39547                 const CommandBuffer* pCommandBuffers_ = nullptr,
   39548                 uint32_t signalSemaphoreCount_ = 0,
   39549                 const Semaphore* pSignalSemaphores_ = nullptr )
   39550       : waitSemaphoreCount( waitSemaphoreCount_ )
   39551       , pWaitSemaphores( pWaitSemaphores_ )
   39552       , pWaitDstStageMask( pWaitDstStageMask_ )
   39553       , commandBufferCount( commandBufferCount_ )
   39554       , pCommandBuffers( pCommandBuffers_ )
   39555       , signalSemaphoreCount( signalSemaphoreCount_ )
   39556       , pSignalSemaphores( pSignalSemaphores_ )
   39557     {
   39558     }
   39559 
   39560     SubmitInfo( VkSubmitInfo const & rhs )
   39561     {
   39562       memcpy( this, &rhs, sizeof( SubmitInfo ) );
   39563     }
   39564 
   39565     SubmitInfo& operator=( VkSubmitInfo const & rhs )
   39566     {
   39567       memcpy( this, &rhs, sizeof( SubmitInfo ) );
   39568       return *this;
   39569     }
   39570     SubmitInfo& setPNext( const void* pNext_ )
   39571     {
   39572       pNext = pNext_;
   39573       return *this;
   39574     }
   39575 
   39576     SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
   39577     {
   39578       waitSemaphoreCount = waitSemaphoreCount_;
   39579       return *this;
   39580     }
   39581 
   39582     SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
   39583     {
   39584       pWaitSemaphores = pWaitSemaphores_;
   39585       return *this;
   39586     }
   39587 
   39588     SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
   39589     {
   39590       pWaitDstStageMask = pWaitDstStageMask_;
   39591       return *this;
   39592     }
   39593 
   39594     SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
   39595     {
   39596       commandBufferCount = commandBufferCount_;
   39597       return *this;
   39598     }
   39599 
   39600     SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
   39601     {
   39602       pCommandBuffers = pCommandBuffers_;
   39603       return *this;
   39604     }
   39605 
   39606     SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
   39607     {
   39608       signalSemaphoreCount = signalSemaphoreCount_;
   39609       return *this;
   39610     }
   39611 
   39612     SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
   39613     {
   39614       pSignalSemaphores = pSignalSemaphores_;
   39615       return *this;
   39616     }
   39617 
   39618     operator VkSubmitInfo const&() const
   39619     {
   39620       return *reinterpret_cast<const VkSubmitInfo*>(this);
   39621     }
   39622 
   39623     operator VkSubmitInfo &()
   39624     {
   39625       return *reinterpret_cast<VkSubmitInfo*>(this);
   39626     }
   39627 
   39628     bool operator==( SubmitInfo const& rhs ) const
   39629     {
   39630       return ( sType == rhs.sType )
   39631           && ( pNext == rhs.pNext )
   39632           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
   39633           && ( pWaitSemaphores == rhs.pWaitSemaphores )
   39634           && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
   39635           && ( commandBufferCount == rhs.commandBufferCount )
   39636           && ( pCommandBuffers == rhs.pCommandBuffers )
   39637           && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
   39638           && ( pSignalSemaphores == rhs.pSignalSemaphores );
   39639     }
   39640 
   39641     bool operator!=( SubmitInfo const& rhs ) const
   39642     {
   39643       return !operator==( rhs );
   39644     }
   39645 
   39646   private:
   39647     StructureType sType = StructureType::eSubmitInfo;
   39648 
   39649   public:
   39650     const void* pNext = nullptr;
   39651     uint32_t waitSemaphoreCount;
   39652     const Semaphore* pWaitSemaphores;
   39653     const PipelineStageFlags* pWaitDstStageMask;
   39654     uint32_t commandBufferCount;
   39655     const CommandBuffer* pCommandBuffers;
   39656     uint32_t signalSemaphoreCount;
   39657     const Semaphore* pSignalSemaphores;
   39658   };
   39659   static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
   39660 
   39661   class Queue
   39662   {
   39663   public:
   39664     VULKAN_HPP_CONSTEXPR Queue()
   39665       : m_queue(VK_NULL_HANDLE)
   39666     {}
   39667 
   39668     VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t )
   39669       : m_queue(VK_NULL_HANDLE)
   39670     {}
   39671 
   39672     VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
   39673       : m_queue( queue )
   39674     {}
   39675 
   39676 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   39677     Queue & operator=(VkQueue queue)
   39678     {
   39679       m_queue = queue;
   39680       return *this;
   39681     }
   39682 #endif
   39683 
   39684     Queue & operator=( std::nullptr_t )
   39685     {
   39686       m_queue = VK_NULL_HANDLE;
   39687       return *this;
   39688     }
   39689 
   39690     bool operator==( Queue const & rhs ) const
   39691     {
   39692       return m_queue == rhs.m_queue;
   39693     }
   39694 
   39695     bool operator!=(Queue const & rhs ) const
   39696     {
   39697       return m_queue != rhs.m_queue;
   39698     }
   39699 
   39700     bool operator<(Queue const & rhs ) const
   39701     {
   39702       return m_queue < rhs.m_queue;
   39703     }
   39704 
   39705     template<typename Dispatch = DispatchLoaderStatic>
   39706     Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence, Dispatch const &d = Dispatch() ) const;
   39707 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39708     template<typename Dispatch = DispatchLoaderStatic>
   39709     ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence, Dispatch const &d = Dispatch() ) const;
   39710 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39711 
   39712 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39713     template<typename Dispatch = DispatchLoaderStatic>
   39714     Result waitIdle(Dispatch const &d = Dispatch() ) const;
   39715 #else
   39716     template<typename Dispatch = DispatchLoaderStatic>
   39717     ResultValueType<void>::type waitIdle(Dispatch const &d = Dispatch() ) const;
   39718 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39719 
   39720     template<typename Dispatch = DispatchLoaderStatic>
   39721     Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence, Dispatch const &d = Dispatch() ) const;
   39722 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39723     template<typename Dispatch = DispatchLoaderStatic>
   39724     ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence, Dispatch const &d = Dispatch() ) const;
   39725 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39726 
   39727     template<typename Dispatch = DispatchLoaderStatic>
   39728     Result presentKHR( const PresentInfoKHR* pPresentInfo, Dispatch const &d = Dispatch() ) const;
   39729 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39730     template<typename Dispatch = DispatchLoaderStatic>
   39731     Result presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d = Dispatch() ) const;
   39732 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39733 
   39734     template<typename Dispatch = DispatchLoaderStatic>
   39735     void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
   39736 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39737     template<typename Dispatch = DispatchLoaderStatic>
   39738     void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
   39739 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39740 
   39741     template<typename Dispatch = DispatchLoaderStatic>
   39742     void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const;
   39743 
   39744     template<typename Dispatch = DispatchLoaderStatic>
   39745     void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
   39746 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39747     template<typename Dispatch = DispatchLoaderStatic>
   39748     void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
   39749 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39750 
   39751     template<typename Dispatch = DispatchLoaderStatic>
   39752     void getCheckpointDataNV( uint32_t* pCheckpointDataCount, CheckpointDataNV* pCheckpointData, Dispatch const &d = Dispatch() ) const;
   39753 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39754     template <typename Allocator = std::allocator<CheckpointDataNV>, typename Dispatch = DispatchLoaderStatic>
   39755     std::vector<CheckpointDataNV,Allocator> getCheckpointDataNV(Dispatch const &d = Dispatch() ) const;
   39756     template <typename Allocator = std::allocator<CheckpointDataNV>, typename Dispatch = DispatchLoaderStatic>
   39757     std::vector<CheckpointDataNV,Allocator> getCheckpointDataNV(Allocator const& vectorAllocator, Dispatch const &d ) const;
   39758 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39759 
   39760 
   39761 
   39762     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
   39763     {
   39764       return m_queue;
   39765     }
   39766 
   39767     explicit operator bool() const
   39768     {
   39769       return m_queue != VK_NULL_HANDLE;
   39770     }
   39771 
   39772     bool operator!() const
   39773     {
   39774       return m_queue == VK_NULL_HANDLE;
   39775     }
   39776 
   39777   private:
   39778     VkQueue m_queue;
   39779   };
   39780 
   39781   static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
   39782 
   39783   template<typename Dispatch>
   39784   VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence, Dispatch const &d) const
   39785   {
   39786     return static_cast<Result>( d.vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
   39787   }
   39788 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39789   template<typename Dispatch>
   39790   VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence, Dispatch const &d ) const
   39791   {
   39792     Result result = static_cast<Result>( d.vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
   39793     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::submit" );
   39794   }
   39795 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39796 
   39797 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39798   template<typename Dispatch>
   39799   VULKAN_HPP_INLINE Result Queue::waitIdle(Dispatch const &d) const
   39800   {
   39801     return static_cast<Result>( d.vkQueueWaitIdle( m_queue ) );
   39802   }
   39803 #else
   39804   template<typename Dispatch>
   39805   VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle(Dispatch const &d ) const
   39806   {
   39807     Result result = static_cast<Result>( d.vkQueueWaitIdle( m_queue ) );
   39808     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::waitIdle" );
   39809   }
   39810 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39811 
   39812   template<typename Dispatch>
   39813   VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence, Dispatch const &d) const
   39814   {
   39815     return static_cast<Result>( d.vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
   39816   }
   39817 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39818   template<typename Dispatch>
   39819   VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence, Dispatch const &d ) const
   39820   {
   39821     Result result = static_cast<Result>( d.vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
   39822     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::bindSparse" );
   39823   }
   39824 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39825 
   39826   template<typename Dispatch>
   39827   VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo, Dispatch const &d) const
   39828   {
   39829     return static_cast<Result>( d.vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
   39830   }
   39831 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39832   template<typename Dispatch>
   39833   VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d ) const
   39834   {
   39835     Result result = static_cast<Result>( d.vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
   39836     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
   39837   }
   39838 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39839 
   39840   template<typename Dispatch>
   39841   VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
   39842   {
   39843     d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
   39844   }
   39845 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39846   template<typename Dispatch>
   39847   VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
   39848   {
   39849     d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
   39850   }
   39851 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39852 
   39853 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39854   template<typename Dispatch>
   39855   VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d) const
   39856   {
   39857     d.vkQueueEndDebugUtilsLabelEXT( m_queue );
   39858   }
   39859 #else
   39860   template<typename Dispatch>
   39861   VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d ) const
   39862   {
   39863     d.vkQueueEndDebugUtilsLabelEXT( m_queue );
   39864   }
   39865 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39866 
   39867   template<typename Dispatch>
   39868   VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
   39869   {
   39870     d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
   39871   }
   39872 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39873   template<typename Dispatch>
   39874   VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
   39875   {
   39876     d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
   39877   }
   39878 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39879 
   39880   template<typename Dispatch>
   39881   VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t* pCheckpointDataCount, CheckpointDataNV* pCheckpointData, Dispatch const &d) const
   39882   {
   39883     d.vkGetQueueCheckpointDataNV( m_queue, pCheckpointDataCount, reinterpret_cast<VkCheckpointDataNV*>( pCheckpointData ) );
   39884   }
   39885 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   39886   template <typename Allocator, typename Dispatch>
   39887   VULKAN_HPP_INLINE std::vector<CheckpointDataNV,Allocator> Queue::getCheckpointDataNV(Dispatch const &d ) const
   39888   {
   39889     std::vector<CheckpointDataNV,Allocator> checkpointData;
   39890     uint32_t checkpointDataCount;
   39891     d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr );
   39892     checkpointData.resize( checkpointDataCount );
   39893     d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast<VkCheckpointDataNV*>( checkpointData.data() ) );
   39894     return checkpointData;
   39895   }
   39896   template <typename Allocator, typename Dispatch>
   39897   VULKAN_HPP_INLINE std::vector<CheckpointDataNV,Allocator> Queue::getCheckpointDataNV(Allocator const& vectorAllocator, Dispatch const &d ) const
   39898   {
   39899     std::vector<CheckpointDataNV,Allocator> checkpointData( vectorAllocator );
   39900     uint32_t checkpointDataCount;
   39901     d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr );
   39902     checkpointData.resize( checkpointDataCount );
   39903     d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast<VkCheckpointDataNV*>( checkpointData.data() ) );
   39904     return checkpointData;
   39905   }
   39906 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   39907 
   39908 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   39909   class Device;
   39910 
   39911   template <typename Dispatch> class UniqueHandleTraits<AccelerationStructureNV,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39912   using UniqueAccelerationStructureNV = UniqueHandle<AccelerationStructureNV,DispatchLoaderStatic>;
   39913   template <typename Dispatch> class UniqueHandleTraits<Buffer,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39914   using UniqueBuffer = UniqueHandle<Buffer,DispatchLoaderStatic>;
   39915   template <typename Dispatch> class UniqueHandleTraits<BufferView,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39916   using UniqueBufferView = UniqueHandle<BufferView,DispatchLoaderStatic>;
   39917   template <typename Dispatch> class UniqueHandleTraits<CommandBuffer,Dispatch> {public: using deleter = PoolFree<Device, CommandPool,Dispatch>; };
   39918   using UniqueCommandBuffer = UniqueHandle<CommandBuffer,DispatchLoaderStatic>;
   39919   template <typename Dispatch> class UniqueHandleTraits<CommandPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39920   using UniqueCommandPool = UniqueHandle<CommandPool,DispatchLoaderStatic>;
   39921   template <typename Dispatch> class UniqueHandleTraits<DescriptorPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39922   using UniqueDescriptorPool = UniqueHandle<DescriptorPool,DispatchLoaderStatic>;
   39923   template <typename Dispatch> class UniqueHandleTraits<DescriptorSet,Dispatch> {public: using deleter = PoolFree<Device, DescriptorPool,Dispatch>; };
   39924   using UniqueDescriptorSet = UniqueHandle<DescriptorSet,DispatchLoaderStatic>;
   39925   template <typename Dispatch> class UniqueHandleTraits<DescriptorSetLayout,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39926   using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout,DispatchLoaderStatic>;
   39927   template <typename Dispatch> class UniqueHandleTraits<DescriptorUpdateTemplate,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39928   using UniqueDescriptorUpdateTemplate = UniqueHandle<DescriptorUpdateTemplate,DispatchLoaderStatic>;
   39929   template <typename Dispatch> class UniqueHandleTraits<DeviceMemory,Dispatch> {public: using deleter = ObjectFree<Device,Dispatch>; };
   39930   using UniqueDeviceMemory = UniqueHandle<DeviceMemory,DispatchLoaderStatic>;
   39931   template <typename Dispatch> class UniqueHandleTraits<Event,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39932   using UniqueEvent = UniqueHandle<Event,DispatchLoaderStatic>;
   39933   template <typename Dispatch> class UniqueHandleTraits<Fence,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39934   using UniqueFence = UniqueHandle<Fence,DispatchLoaderStatic>;
   39935   template <typename Dispatch> class UniqueHandleTraits<Framebuffer,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39936   using UniqueFramebuffer = UniqueHandle<Framebuffer,DispatchLoaderStatic>;
   39937   template <typename Dispatch> class UniqueHandleTraits<Image,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39938   using UniqueImage = UniqueHandle<Image,DispatchLoaderStatic>;
   39939   template <typename Dispatch> class UniqueHandleTraits<ImageView,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39940   using UniqueImageView = UniqueHandle<ImageView,DispatchLoaderStatic>;
   39941   template <typename Dispatch> class UniqueHandleTraits<IndirectCommandsLayoutNVX,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39942   using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX,DispatchLoaderStatic>;
   39943   template <typename Dispatch> class UniqueHandleTraits<ObjectTableNVX,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39944   using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX,DispatchLoaderStatic>;
   39945   template <typename Dispatch> class UniqueHandleTraits<Pipeline,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39946   using UniquePipeline = UniqueHandle<Pipeline,DispatchLoaderStatic>;
   39947   template <typename Dispatch> class UniqueHandleTraits<PipelineCache,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39948   using UniquePipelineCache = UniqueHandle<PipelineCache,DispatchLoaderStatic>;
   39949   template <typename Dispatch> class UniqueHandleTraits<PipelineLayout,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39950   using UniquePipelineLayout = UniqueHandle<PipelineLayout,DispatchLoaderStatic>;
   39951   template <typename Dispatch> class UniqueHandleTraits<QueryPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39952   using UniqueQueryPool = UniqueHandle<QueryPool,DispatchLoaderStatic>;
   39953   template <typename Dispatch> class UniqueHandleTraits<RenderPass,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39954   using UniqueRenderPass = UniqueHandle<RenderPass,DispatchLoaderStatic>;
   39955   template <typename Dispatch> class UniqueHandleTraits<Sampler,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39956   using UniqueSampler = UniqueHandle<Sampler,DispatchLoaderStatic>;
   39957   template <typename Dispatch> class UniqueHandleTraits<SamplerYcbcrConversion,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39958   using UniqueSamplerYcbcrConversion = UniqueHandle<SamplerYcbcrConversion,DispatchLoaderStatic>;
   39959   template <typename Dispatch> class UniqueHandleTraits<Semaphore,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39960   using UniqueSemaphore = UniqueHandle<Semaphore,DispatchLoaderStatic>;
   39961   template <typename Dispatch> class UniqueHandleTraits<ShaderModule,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39962   using UniqueShaderModule = UniqueHandle<ShaderModule,DispatchLoaderStatic>;
   39963   template <typename Dispatch> class UniqueHandleTraits<SwapchainKHR,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39964   using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR,DispatchLoaderStatic>;
   39965   template <typename Dispatch> class UniqueHandleTraits<ValidationCacheEXT,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
   39966   using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT,DispatchLoaderStatic>;
   39967 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   39968 
   39969   class Device
   39970   {
   39971   public:
   39972     VULKAN_HPP_CONSTEXPR Device()
   39973       : m_device(VK_NULL_HANDLE)
   39974     {}
   39975 
   39976     VULKAN_HPP_CONSTEXPR Device( std::nullptr_t )
   39977       : m_device(VK_NULL_HANDLE)
   39978     {}
   39979 
   39980     VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
   39981       : m_device( device )
   39982     {}
   39983 
   39984 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   39985     Device & operator=(VkDevice device)
   39986     {
   39987       m_device = device;
   39988       return *this;
   39989     }
   39990 #endif
   39991 
   39992     Device & operator=( std::nullptr_t )
   39993     {
   39994       m_device = VK_NULL_HANDLE;
   39995       return *this;
   39996     }
   39997 
   39998     bool operator==( Device const & rhs ) const
   39999     {
   40000       return m_device == rhs.m_device;
   40001     }
   40002 
   40003     bool operator!=(Device const & rhs ) const
   40004     {
   40005       return m_device != rhs.m_device;
   40006     }
   40007 
   40008     bool operator<(Device const & rhs ) const
   40009     {
   40010       return m_device < rhs.m_device;
   40011     }
   40012 
   40013     template<typename Dispatch = DispatchLoaderStatic>
   40014     PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const;
   40015 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40016     template<typename Dispatch = DispatchLoaderStatic>
   40017     PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const;
   40018 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40019 
   40020     template<typename Dispatch = DispatchLoaderStatic>
   40021     void destroy( const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40022 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40023     template<typename Dispatch = DispatchLoaderStatic>
   40024     void destroy( Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40025 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40026 
   40027     template<typename Dispatch = DispatchLoaderStatic>
   40028     void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue, Dispatch const &d = Dispatch() ) const;
   40029 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40030     template<typename Dispatch = DispatchLoaderStatic>
   40031     Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d = Dispatch() ) const;
   40032 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40033 
   40034 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40035     template<typename Dispatch = DispatchLoaderStatic>
   40036     Result waitIdle(Dispatch const &d = Dispatch() ) const;
   40037 #else
   40038     template<typename Dispatch = DispatchLoaderStatic>
   40039     ResultValueType<void>::type waitIdle(Dispatch const &d = Dispatch() ) const;
   40040 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40041 
   40042     template<typename Dispatch = DispatchLoaderStatic>
   40043     Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory, Dispatch const &d = Dispatch() ) const;
   40044 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40045     template<typename Dispatch = DispatchLoaderStatic>
   40046     ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40047 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40048     template<typename Dispatch = DispatchLoaderStatic>
   40049     typename ResultValueType<UniqueHandle<DeviceMemory,Dispatch>>::type allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40050 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40051 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40052 
   40053     template<typename Dispatch = DispatchLoaderStatic>
   40054     void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40055 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40056     template<typename Dispatch = DispatchLoaderStatic>
   40057     void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40058 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40059 
   40060     template<typename Dispatch = DispatchLoaderStatic>
   40061     void free( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40062 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40063     template<typename Dispatch = DispatchLoaderStatic>
   40064     void free( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40065 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40066 
   40067     template<typename Dispatch = DispatchLoaderStatic>
   40068     Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData, Dispatch const &d = Dispatch() ) const;
   40069 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40070     template<typename Dispatch = DispatchLoaderStatic>
   40071     ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags(), Dispatch const &d = Dispatch() ) const;
   40072 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40073 
   40074     template<typename Dispatch = DispatchLoaderStatic>
   40075     void unmapMemory( DeviceMemory memory, Dispatch const &d = Dispatch() ) const;
   40076 
   40077     template<typename Dispatch = DispatchLoaderStatic>
   40078     Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const;
   40079 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40080     template<typename Dispatch = DispatchLoaderStatic>
   40081     ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d = Dispatch() ) const;
   40082 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40083 
   40084     template<typename Dispatch = DispatchLoaderStatic>
   40085     Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const;
   40086 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40087     template<typename Dispatch = DispatchLoaderStatic>
   40088     ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d = Dispatch() ) const;
   40089 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40090 
   40091     template<typename Dispatch = DispatchLoaderStatic>
   40092     void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes, Dispatch const &d = Dispatch() ) const;
   40093 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40094     template<typename Dispatch = DispatchLoaderStatic>
   40095     DeviceSize getMemoryCommitment( DeviceMemory memory, Dispatch const &d = Dispatch() ) const;
   40096 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40097 
   40098     template<typename Dispatch = DispatchLoaderStatic>
   40099     void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   40100 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40101     template<typename Dispatch = DispatchLoaderStatic>
   40102     MemoryRequirements getBufferMemoryRequirements( Buffer buffer, Dispatch const &d = Dispatch() ) const;
   40103 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40104 
   40105 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40106     template<typename Dispatch = DispatchLoaderStatic>
   40107     Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
   40108 #else
   40109     template<typename Dispatch = DispatchLoaderStatic>
   40110     ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
   40111 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40112 
   40113     template<typename Dispatch = DispatchLoaderStatic>
   40114     void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   40115 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40116     template<typename Dispatch = DispatchLoaderStatic>
   40117     MemoryRequirements getImageMemoryRequirements( Image image, Dispatch const &d = Dispatch() ) const;
   40118 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40119 
   40120 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40121     template<typename Dispatch = DispatchLoaderStatic>
   40122     Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
   40123 #else
   40124     template<typename Dispatch = DispatchLoaderStatic>
   40125     ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
   40126 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40127 
   40128     template<typename Dispatch = DispatchLoaderStatic>
   40129     void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   40130 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40131     template <typename Allocator = std::allocator<SparseImageMemoryRequirements>, typename Dispatch = DispatchLoaderStatic>
   40132     std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image, Dispatch const &d = Dispatch() ) const;
   40133     template <typename Allocator = std::allocator<SparseImageMemoryRequirements>, typename Dispatch = DispatchLoaderStatic>
   40134     std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40135 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40136 
   40137     template<typename Dispatch = DispatchLoaderStatic>
   40138     Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
   40139 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40140     template<typename Dispatch = DispatchLoaderStatic>
   40141     ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40142 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40143     template<typename Dispatch = DispatchLoaderStatic>
   40144     typename ResultValueType<UniqueHandle<Fence,Dispatch>>::type createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40145 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40146 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40147 
   40148     template<typename Dispatch = DispatchLoaderStatic>
   40149     void destroyFence( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40150 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40151     template<typename Dispatch = DispatchLoaderStatic>
   40152     void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40153 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40154 
   40155     template<typename Dispatch = DispatchLoaderStatic>
   40156     void destroy( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40157 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40158     template<typename Dispatch = DispatchLoaderStatic>
   40159     void destroy( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40160 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40161 
   40162     template<typename Dispatch = DispatchLoaderStatic>
   40163     Result resetFences( uint32_t fenceCount, const Fence* pFences, Dispatch const &d = Dispatch() ) const;
   40164 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40165     template<typename Dispatch = DispatchLoaderStatic>
   40166     ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences, Dispatch const &d = Dispatch() ) const;
   40167 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40168 
   40169     template<typename Dispatch = DispatchLoaderStatic>
   40170     Result getFenceStatus( Fence fence, Dispatch const &d = Dispatch() ) const;
   40171 
   40172     template<typename Dispatch = DispatchLoaderStatic>
   40173     Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const;
   40174 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40175     template<typename Dispatch = DispatchLoaderStatic>
   40176     Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const;
   40177 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40178 
   40179     template<typename Dispatch = DispatchLoaderStatic>
   40180     Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore, Dispatch const &d = Dispatch() ) const;
   40181 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40182     template<typename Dispatch = DispatchLoaderStatic>
   40183     ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40184 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40185     template<typename Dispatch = DispatchLoaderStatic>
   40186     typename ResultValueType<UniqueHandle<Semaphore,Dispatch>>::type createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40187 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40188 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40189 
   40190     template<typename Dispatch = DispatchLoaderStatic>
   40191     void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40192 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40193     template<typename Dispatch = DispatchLoaderStatic>
   40194     void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40195 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40196 
   40197     template<typename Dispatch = DispatchLoaderStatic>
   40198     void destroy( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40199 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40200     template<typename Dispatch = DispatchLoaderStatic>
   40201     void destroy( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40202 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40203 
   40204     template<typename Dispatch = DispatchLoaderStatic>
   40205     Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent, Dispatch const &d = Dispatch() ) const;
   40206 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40207     template<typename Dispatch = DispatchLoaderStatic>
   40208     ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40209 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40210     template<typename Dispatch = DispatchLoaderStatic>
   40211     typename ResultValueType<UniqueHandle<Event,Dispatch>>::type createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40212 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40213 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40214 
   40215     template<typename Dispatch = DispatchLoaderStatic>
   40216     void destroyEvent( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40217 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40218     template<typename Dispatch = DispatchLoaderStatic>
   40219     void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40220 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40221 
   40222     template<typename Dispatch = DispatchLoaderStatic>
   40223     void destroy( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40224 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40225     template<typename Dispatch = DispatchLoaderStatic>
   40226     void destroy( Event event, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40227 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40228 
   40229     template<typename Dispatch = DispatchLoaderStatic>
   40230     Result getEventStatus( Event event, Dispatch const &d = Dispatch() ) const;
   40231 
   40232 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40233     template<typename Dispatch = DispatchLoaderStatic>
   40234     Result setEvent( Event event, Dispatch const &d = Dispatch() ) const;
   40235 #else
   40236     template<typename Dispatch = DispatchLoaderStatic>
   40237     ResultValueType<void>::type setEvent( Event event, Dispatch const &d = Dispatch() ) const;
   40238 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40239 
   40240 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40241     template<typename Dispatch = DispatchLoaderStatic>
   40242     Result resetEvent( Event event, Dispatch const &d = Dispatch() ) const;
   40243 #else
   40244     template<typename Dispatch = DispatchLoaderStatic>
   40245     ResultValueType<void>::type resetEvent( Event event, Dispatch const &d = Dispatch() ) const;
   40246 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40247 
   40248     template<typename Dispatch = DispatchLoaderStatic>
   40249     Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool, Dispatch const &d = Dispatch() ) const;
   40250 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40251     template<typename Dispatch = DispatchLoaderStatic>
   40252     ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40253 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40254     template<typename Dispatch = DispatchLoaderStatic>
   40255     typename ResultValueType<UniqueHandle<QueryPool,Dispatch>>::type createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40256 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40257 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40258 
   40259     template<typename Dispatch = DispatchLoaderStatic>
   40260     void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40261 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40262     template<typename Dispatch = DispatchLoaderStatic>
   40263     void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40264 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40265 
   40266     template<typename Dispatch = DispatchLoaderStatic>
   40267     void destroy( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40268 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40269     template<typename Dispatch = DispatchLoaderStatic>
   40270     void destroy( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40271 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40272 
   40273     template<typename Dispatch = DispatchLoaderStatic>
   40274     Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
   40275 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40276     template <typename T, typename Dispatch = DispatchLoaderStatic>
   40277     Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
   40278 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40279 
   40280     template<typename Dispatch = DispatchLoaderStatic>
   40281     Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer, Dispatch const &d = Dispatch() ) const;
   40282 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40283     template<typename Dispatch = DispatchLoaderStatic>
   40284     ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40285 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40286     template<typename Dispatch = DispatchLoaderStatic>
   40287     typename ResultValueType<UniqueHandle<Buffer,Dispatch>>::type createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40288 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40289 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40290 
   40291     template<typename Dispatch = DispatchLoaderStatic>
   40292     void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40293 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40294     template<typename Dispatch = DispatchLoaderStatic>
   40295     void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40296 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40297 
   40298     template<typename Dispatch = DispatchLoaderStatic>
   40299     void destroy( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40300 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40301     template<typename Dispatch = DispatchLoaderStatic>
   40302     void destroy( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40303 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40304 
   40305     template<typename Dispatch = DispatchLoaderStatic>
   40306     Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView, Dispatch const &d = Dispatch() ) const;
   40307 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40308     template<typename Dispatch = DispatchLoaderStatic>
   40309     ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40310 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40311     template<typename Dispatch = DispatchLoaderStatic>
   40312     typename ResultValueType<UniqueHandle<BufferView,Dispatch>>::type createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40313 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40314 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40315 
   40316     template<typename Dispatch = DispatchLoaderStatic>
   40317     void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40318 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40319     template<typename Dispatch = DispatchLoaderStatic>
   40320     void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40321 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40322 
   40323     template<typename Dispatch = DispatchLoaderStatic>
   40324     void destroy( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40325 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40326     template<typename Dispatch = DispatchLoaderStatic>
   40327     void destroy( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40328 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40329 
   40330     template<typename Dispatch = DispatchLoaderStatic>
   40331     Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage, Dispatch const &d = Dispatch() ) const;
   40332 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40333     template<typename Dispatch = DispatchLoaderStatic>
   40334     ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40335 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40336     template<typename Dispatch = DispatchLoaderStatic>
   40337     typename ResultValueType<UniqueHandle<Image,Dispatch>>::type createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40338 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40339 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40340 
   40341     template<typename Dispatch = DispatchLoaderStatic>
   40342     void destroyImage( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40343 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40344     template<typename Dispatch = DispatchLoaderStatic>
   40345     void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40346 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40347 
   40348     template<typename Dispatch = DispatchLoaderStatic>
   40349     void destroy( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40350 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40351     template<typename Dispatch = DispatchLoaderStatic>
   40352     void destroy( Image image, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40353 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40354 
   40355     template<typename Dispatch = DispatchLoaderStatic>
   40356     void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout, Dispatch const &d = Dispatch() ) const;
   40357 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40358     template<typename Dispatch = DispatchLoaderStatic>
   40359     SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource, Dispatch const &d = Dispatch() ) const;
   40360 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40361 
   40362     template<typename Dispatch = DispatchLoaderStatic>
   40363     Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView, Dispatch const &d = Dispatch() ) const;
   40364 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40365     template<typename Dispatch = DispatchLoaderStatic>
   40366     ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40367 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40368     template<typename Dispatch = DispatchLoaderStatic>
   40369     typename ResultValueType<UniqueHandle<ImageView,Dispatch>>::type createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40370 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40371 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40372 
   40373     template<typename Dispatch = DispatchLoaderStatic>
   40374     void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40375 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40376     template<typename Dispatch = DispatchLoaderStatic>
   40377     void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40378 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40379 
   40380     template<typename Dispatch = DispatchLoaderStatic>
   40381     void destroy( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40382 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40383     template<typename Dispatch = DispatchLoaderStatic>
   40384     void destroy( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40385 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40386 
   40387     template<typename Dispatch = DispatchLoaderStatic>
   40388     Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule, Dispatch const &d = Dispatch() ) const;
   40389 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40390     template<typename Dispatch = DispatchLoaderStatic>
   40391     ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40392 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40393     template<typename Dispatch = DispatchLoaderStatic>
   40394     typename ResultValueType<UniqueHandle<ShaderModule,Dispatch>>::type createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40395 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40396 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40397 
   40398     template<typename Dispatch = DispatchLoaderStatic>
   40399     void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40400 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40401     template<typename Dispatch = DispatchLoaderStatic>
   40402     void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40403 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40404 
   40405     template<typename Dispatch = DispatchLoaderStatic>
   40406     void destroy( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40407 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40408     template<typename Dispatch = DispatchLoaderStatic>
   40409     void destroy( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40410 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40411 
   40412     template<typename Dispatch = DispatchLoaderStatic>
   40413     Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache, Dispatch const &d = Dispatch() ) const;
   40414 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40415     template<typename Dispatch = DispatchLoaderStatic>
   40416     ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40417 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40418     template<typename Dispatch = DispatchLoaderStatic>
   40419     typename ResultValueType<UniqueHandle<PipelineCache,Dispatch>>::type createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40420 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40421 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40422 
   40423     template<typename Dispatch = DispatchLoaderStatic>
   40424     void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40425 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40426     template<typename Dispatch = DispatchLoaderStatic>
   40427     void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40428 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40429 
   40430     template<typename Dispatch = DispatchLoaderStatic>
   40431     void destroy( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40432 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40433     template<typename Dispatch = DispatchLoaderStatic>
   40434     void destroy( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40435 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40436 
   40437     template<typename Dispatch = DispatchLoaderStatic>
   40438     Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const;
   40439 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40440     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   40441     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache, Dispatch const &d = Dispatch() ) const;
   40442     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   40443     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40444 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40445 
   40446     template<typename Dispatch = DispatchLoaderStatic>
   40447     Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches, Dispatch const &d = Dispatch() ) const;
   40448 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40449     template<typename Dispatch = DispatchLoaderStatic>
   40450     ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches, Dispatch const &d = Dispatch() ) const;
   40451 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40452 
   40453     template<typename Dispatch = DispatchLoaderStatic>
   40454     Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const;
   40455 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40456     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   40457     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40458     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   40459     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40460     template<typename Dispatch = DispatchLoaderStatic>
   40461     ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40462 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40463     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   40464     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;
   40465     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   40466     typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40467     template<typename Dispatch = DispatchLoaderStatic>
   40468     typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40469 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40470 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40471 
   40472     template<typename Dispatch = DispatchLoaderStatic>
   40473     Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const;
   40474 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40475     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   40476     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40477     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   40478     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40479     template<typename Dispatch = DispatchLoaderStatic>
   40480     ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40481 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40482     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   40483     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;
   40484     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   40485     typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40486     template<typename Dispatch = DispatchLoaderStatic>
   40487     typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40488 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40489 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40490 
   40491     template<typename Dispatch = DispatchLoaderStatic>
   40492     void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40493 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40494     template<typename Dispatch = DispatchLoaderStatic>
   40495     void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40496 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40497 
   40498     template<typename Dispatch = DispatchLoaderStatic>
   40499     void destroy( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40500 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40501     template<typename Dispatch = DispatchLoaderStatic>
   40502     void destroy( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40503 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40504 
   40505     template<typename Dispatch = DispatchLoaderStatic>
   40506     Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout, Dispatch const &d = Dispatch() ) const;
   40507 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40508     template<typename Dispatch = DispatchLoaderStatic>
   40509     ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40510 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40511     template<typename Dispatch = DispatchLoaderStatic>
   40512     typename ResultValueType<UniqueHandle<PipelineLayout,Dispatch>>::type createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40513 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40514 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40515 
   40516     template<typename Dispatch = DispatchLoaderStatic>
   40517     void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40518 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40519     template<typename Dispatch = DispatchLoaderStatic>
   40520     void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40521 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40522 
   40523     template<typename Dispatch = DispatchLoaderStatic>
   40524     void destroy( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40525 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40526     template<typename Dispatch = DispatchLoaderStatic>
   40527     void destroy( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40528 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40529 
   40530     template<typename Dispatch = DispatchLoaderStatic>
   40531     Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler, Dispatch const &d = Dispatch() ) const;
   40532 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40533     template<typename Dispatch = DispatchLoaderStatic>
   40534     ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40535 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40536     template<typename Dispatch = DispatchLoaderStatic>
   40537     typename ResultValueType<UniqueHandle<Sampler,Dispatch>>::type createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40538 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40539 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40540 
   40541     template<typename Dispatch = DispatchLoaderStatic>
   40542     void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40543 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40544     template<typename Dispatch = DispatchLoaderStatic>
   40545     void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40546 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40547 
   40548     template<typename Dispatch = DispatchLoaderStatic>
   40549     void destroy( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40550 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40551     template<typename Dispatch = DispatchLoaderStatic>
   40552     void destroy( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40553 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40554 
   40555     template<typename Dispatch = DispatchLoaderStatic>
   40556     Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout, Dispatch const &d = Dispatch() ) const;
   40557 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40558     template<typename Dispatch = DispatchLoaderStatic>
   40559     ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40560 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40561     template<typename Dispatch = DispatchLoaderStatic>
   40562     typename ResultValueType<UniqueHandle<DescriptorSetLayout,Dispatch>>::type createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40563 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40564 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40565 
   40566     template<typename Dispatch = DispatchLoaderStatic>
   40567     void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40568 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40569     template<typename Dispatch = DispatchLoaderStatic>
   40570     void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40571 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40572 
   40573     template<typename Dispatch = DispatchLoaderStatic>
   40574     void destroy( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40575 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40576     template<typename Dispatch = DispatchLoaderStatic>
   40577     void destroy( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40578 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40579 
   40580     template<typename Dispatch = DispatchLoaderStatic>
   40581     Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool, Dispatch const &d = Dispatch() ) const;
   40582 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40583     template<typename Dispatch = DispatchLoaderStatic>
   40584     ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40585 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40586     template<typename Dispatch = DispatchLoaderStatic>
   40587     typename ResultValueType<UniqueHandle<DescriptorPool,Dispatch>>::type createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40588 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40589 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40590 
   40591     template<typename Dispatch = DispatchLoaderStatic>
   40592     void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40593 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40594     template<typename Dispatch = DispatchLoaderStatic>
   40595     void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40596 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40597 
   40598     template<typename Dispatch = DispatchLoaderStatic>
   40599     void destroy( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40600 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40601     template<typename Dispatch = DispatchLoaderStatic>
   40602     void destroy( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40603 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40604 
   40605 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40606     template<typename Dispatch = DispatchLoaderStatic>
   40607     Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const;
   40608 #else
   40609     template<typename Dispatch = DispatchLoaderStatic>
   40610     ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const;
   40611 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40612 
   40613     template<typename Dispatch = DispatchLoaderStatic>
   40614     Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
   40615 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40616     template <typename Allocator = std::allocator<DescriptorSet>, typename Dispatch = DispatchLoaderStatic>
   40617     typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
   40618     template <typename Allocator = std::allocator<DescriptorSet>, typename Dispatch = DispatchLoaderStatic>
   40619     typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40620 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40621     template <typename Allocator = std::allocator<UniqueDescriptorSet>, typename Dispatch = DispatchLoaderStatic>
   40622     typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
   40623     template <typename Allocator = std::allocator<UniqueDescriptorSet>, typename Dispatch = DispatchLoaderStatic>
   40624     typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40625 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40626 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40627 
   40628     template<typename Dispatch = DispatchLoaderStatic>
   40629     Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
   40630 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40631     template<typename Dispatch = DispatchLoaderStatic>
   40632     ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d = Dispatch() ) const;
   40633 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40634 
   40635     template<typename Dispatch = DispatchLoaderStatic>
   40636     Result free( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
   40637 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40638     template<typename Dispatch = DispatchLoaderStatic>
   40639     ResultValueType<void>::type free( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d = Dispatch() ) const;
   40640 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40641 
   40642     template<typename Dispatch = DispatchLoaderStatic>
   40643     void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies, Dispatch const &d = Dispatch() ) const;
   40644 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40645     template<typename Dispatch = DispatchLoaderStatic>
   40646     void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies, Dispatch const &d = Dispatch() ) const;
   40647 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40648 
   40649     template<typename Dispatch = DispatchLoaderStatic>
   40650     Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer, Dispatch const &d = Dispatch() ) const;
   40651 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40652     template<typename Dispatch = DispatchLoaderStatic>
   40653     ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40654 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40655     template<typename Dispatch = DispatchLoaderStatic>
   40656     typename ResultValueType<UniqueHandle<Framebuffer,Dispatch>>::type createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40657 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40658 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40659 
   40660     template<typename Dispatch = DispatchLoaderStatic>
   40661     void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40662 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40663     template<typename Dispatch = DispatchLoaderStatic>
   40664     void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40665 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40666 
   40667     template<typename Dispatch = DispatchLoaderStatic>
   40668     void destroy( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40669 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40670     template<typename Dispatch = DispatchLoaderStatic>
   40671     void destroy( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40672 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40673 
   40674     template<typename Dispatch = DispatchLoaderStatic>
   40675     Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const;
   40676 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40677     template<typename Dispatch = DispatchLoaderStatic>
   40678     ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40679 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40680     template<typename Dispatch = DispatchLoaderStatic>
   40681     typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40682 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40683 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40684 
   40685     template<typename Dispatch = DispatchLoaderStatic>
   40686     void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40687 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40688     template<typename Dispatch = DispatchLoaderStatic>
   40689     void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40690 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40691 
   40692     template<typename Dispatch = DispatchLoaderStatic>
   40693     void destroy( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40694 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40695     template<typename Dispatch = DispatchLoaderStatic>
   40696     void destroy( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40697 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40698 
   40699     template<typename Dispatch = DispatchLoaderStatic>
   40700     void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity, Dispatch const &d = Dispatch() ) const;
   40701 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40702     template<typename Dispatch = DispatchLoaderStatic>
   40703     Extent2D getRenderAreaGranularity( RenderPass renderPass, Dispatch const &d = Dispatch() ) const;
   40704 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40705 
   40706     template<typename Dispatch = DispatchLoaderStatic>
   40707     Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool, Dispatch const &d = Dispatch() ) const;
   40708 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40709     template<typename Dispatch = DispatchLoaderStatic>
   40710     ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40711 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40712     template<typename Dispatch = DispatchLoaderStatic>
   40713     typename ResultValueType<UniqueHandle<CommandPool,Dispatch>>::type createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40714 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40715 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40716 
   40717     template<typename Dispatch = DispatchLoaderStatic>
   40718     void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40719 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40720     template<typename Dispatch = DispatchLoaderStatic>
   40721     void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40722 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40723 
   40724     template<typename Dispatch = DispatchLoaderStatic>
   40725     void destroy( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40726 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40727     template<typename Dispatch = DispatchLoaderStatic>
   40728     void destroy( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40729 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40730 
   40731 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40732     template<typename Dispatch = DispatchLoaderStatic>
   40733     Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const;
   40734 #else
   40735     template<typename Dispatch = DispatchLoaderStatic>
   40736     ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const;
   40737 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40738 
   40739     template<typename Dispatch = DispatchLoaderStatic>
   40740     Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
   40741 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40742     template <typename Allocator = std::allocator<CommandBuffer>, typename Dispatch = DispatchLoaderStatic>
   40743     typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
   40744     template <typename Allocator = std::allocator<CommandBuffer>, typename Dispatch = DispatchLoaderStatic>
   40745     typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40746 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40747     template <typename Allocator = std::allocator<UniqueCommandBuffer>, typename Dispatch = DispatchLoaderStatic>
   40748     typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
   40749     template <typename Allocator = std::allocator<UniqueCommandBuffer>, typename Dispatch = DispatchLoaderStatic>
   40750     typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40751 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40752 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40753 
   40754     template<typename Dispatch = DispatchLoaderStatic>
   40755     void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
   40756 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40757     template<typename Dispatch = DispatchLoaderStatic>
   40758     void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
   40759 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40760 
   40761     template<typename Dispatch = DispatchLoaderStatic>
   40762     void free( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
   40763 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40764     template<typename Dispatch = DispatchLoaderStatic>
   40765     void free( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
   40766 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40767 
   40768     template<typename Dispatch = DispatchLoaderStatic>
   40769     Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains, Dispatch const &d = Dispatch() ) const;
   40770 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40771     template <typename Allocator = std::allocator<SwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
   40772     typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40773     template <typename Allocator = std::allocator<SwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
   40774     typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40775     template<typename Dispatch = DispatchLoaderStatic>
   40776     ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40777 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40778     template <typename Allocator = std::allocator<UniqueSwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
   40779     typename ResultValueType<std::vector<UniqueHandle<SwapchainKHR,Dispatch>,Allocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40780     template <typename Allocator = std::allocator<UniqueSwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
   40781     typename ResultValueType<std::vector<UniqueHandle<SwapchainKHR,Dispatch>,Allocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40782     template<typename Dispatch = DispatchLoaderStatic>
   40783     typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40784 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40785 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40786 
   40787     template<typename Dispatch = DispatchLoaderStatic>
   40788     Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain, Dispatch const &d = Dispatch() ) const;
   40789 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40790     template<typename Dispatch = DispatchLoaderStatic>
   40791     ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40792 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40793     template<typename Dispatch = DispatchLoaderStatic>
   40794     typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40795 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40796 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40797 
   40798     template<typename Dispatch = DispatchLoaderStatic>
   40799     void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40800 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40801     template<typename Dispatch = DispatchLoaderStatic>
   40802     void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40803 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40804 
   40805     template<typename Dispatch = DispatchLoaderStatic>
   40806     void destroy( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40807 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40808     template<typename Dispatch = DispatchLoaderStatic>
   40809     void destroy( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40810 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40811 
   40812     template<typename Dispatch = DispatchLoaderStatic>
   40813     Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages, Dispatch const &d = Dispatch() ) const;
   40814 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40815     template <typename Allocator = std::allocator<Image>, typename Dispatch = DispatchLoaderStatic>
   40816     typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
   40817     template <typename Allocator = std::allocator<Image>, typename Dispatch = DispatchLoaderStatic>
   40818     typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const;
   40819 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40820 
   40821     template<typename Dispatch = DispatchLoaderStatic>
   40822     Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const;
   40823 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40824     template<typename Dispatch = DispatchLoaderStatic>
   40825     ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, Dispatch const &d = Dispatch() ) const;
   40826 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40827 
   40828     template<typename Dispatch = DispatchLoaderStatic>
   40829     Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const;
   40830 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40831     template<typename Dispatch = DispatchLoaderStatic>
   40832     ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const;
   40833 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40834 
   40835     template<typename Dispatch = DispatchLoaderStatic>
   40836     Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const;
   40837 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40838     template<typename Dispatch = DispatchLoaderStatic>
   40839     ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const;
   40840 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40841 
   40842 #ifdef VK_USE_PLATFORM_WIN32_NV
   40843     template<typename Dispatch = DispatchLoaderStatic>
   40844     Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
   40845 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40846     template<typename Dispatch = DispatchLoaderStatic>
   40847     ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d = Dispatch() ) const;
   40848 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40849 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   40850 
   40851     template<typename Dispatch = DispatchLoaderStatic>
   40852     Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d = Dispatch() ) const;
   40853 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40854     template<typename Dispatch = DispatchLoaderStatic>
   40855     ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40856 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40857     template<typename Dispatch = DispatchLoaderStatic>
   40858     typename ResultValueType<UniqueHandle<IndirectCommandsLayoutNVX,Dispatch>>::type createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40859 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40860 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40861 
   40862     template<typename Dispatch = DispatchLoaderStatic>
   40863     void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40864 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40865     template<typename Dispatch = DispatchLoaderStatic>
   40866     void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40867 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40868 
   40869     template<typename Dispatch = DispatchLoaderStatic>
   40870     void destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40871 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40872     template<typename Dispatch = DispatchLoaderStatic>
   40873     void destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40874 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40875 
   40876     template<typename Dispatch = DispatchLoaderStatic>
   40877     Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable, Dispatch const &d = Dispatch() ) const;
   40878 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40879     template<typename Dispatch = DispatchLoaderStatic>
   40880     ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40881 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   40882     template<typename Dispatch = DispatchLoaderStatic>
   40883     typename ResultValueType<UniqueHandle<ObjectTableNVX,Dispatch>>::type createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40884 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   40885 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40886 
   40887     template<typename Dispatch = DispatchLoaderStatic>
   40888     void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40889 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40890     template<typename Dispatch = DispatchLoaderStatic>
   40891     void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40892 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40893 
   40894     template<typename Dispatch = DispatchLoaderStatic>
   40895     void destroy( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   40896 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40897     template<typename Dispatch = DispatchLoaderStatic>
   40898     void destroy( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   40899 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40900 
   40901     template<typename Dispatch = DispatchLoaderStatic>
   40902     Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const;
   40903 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40904     template<typename Dispatch = DispatchLoaderStatic>
   40905     ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d = Dispatch() ) const;
   40906 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40907 
   40908     template<typename Dispatch = DispatchLoaderStatic>
   40909     Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const;
   40910 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40911     template<typename Dispatch = DispatchLoaderStatic>
   40912     ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d = Dispatch() ) const;
   40913 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40914 
   40915     template<typename Dispatch = DispatchLoaderStatic>
   40916     void trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const;
   40917 
   40918     template<typename Dispatch = DispatchLoaderStatic>
   40919     void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const;
   40920 
   40921 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40922     template<typename Dispatch = DispatchLoaderStatic>
   40923     Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
   40924 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40925     template<typename Dispatch = DispatchLoaderStatic>
   40926     ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40927 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40928 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   40929 
   40930 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40931     template<typename Dispatch = DispatchLoaderStatic>
   40932     Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d = Dispatch() ) const;
   40933 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40934     template<typename Dispatch = DispatchLoaderStatic>
   40935     ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d = Dispatch() ) const;
   40936 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40937 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   40938 
   40939     template<typename Dispatch = DispatchLoaderStatic>
   40940     Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
   40941 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40942     template<typename Dispatch = DispatchLoaderStatic>
   40943     ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
   40944 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40945 
   40946     template<typename Dispatch = DispatchLoaderStatic>
   40947     Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d = Dispatch() ) const;
   40948 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40949     template<typename Dispatch = DispatchLoaderStatic>
   40950     ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d = Dispatch() ) const;
   40951 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40952 
   40953 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40954     template<typename Dispatch = DispatchLoaderStatic>
   40955     Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
   40956 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40957     template<typename Dispatch = DispatchLoaderStatic>
   40958     ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40959 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40960 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   40961 
   40962 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40963     template<typename Dispatch = DispatchLoaderStatic>
   40964     Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40965 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40966     template<typename Dispatch = DispatchLoaderStatic>
   40967     ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40968 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40969 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   40970 
   40971     template<typename Dispatch = DispatchLoaderStatic>
   40972     Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
   40973 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40974     template<typename Dispatch = DispatchLoaderStatic>
   40975     ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
   40976 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40977 
   40978     template<typename Dispatch = DispatchLoaderStatic>
   40979     Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const;
   40980 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40981     template<typename Dispatch = DispatchLoaderStatic>
   40982     ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const;
   40983 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40984 
   40985 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40986     template<typename Dispatch = DispatchLoaderStatic>
   40987     Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
   40988 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40989     template<typename Dispatch = DispatchLoaderStatic>
   40990     ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40991 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   40992 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   40993 
   40994 #ifdef VK_USE_PLATFORM_WIN32_KHR
   40995     template<typename Dispatch = DispatchLoaderStatic>
   40996     Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   40997 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   40998     template<typename Dispatch = DispatchLoaderStatic>
   40999     ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
   41000 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41001 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   41002 
   41003     template<typename Dispatch = DispatchLoaderStatic>
   41004     Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
   41005 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41006     template<typename Dispatch = DispatchLoaderStatic>
   41007     ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
   41008 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41009 
   41010     template<typename Dispatch = DispatchLoaderStatic>
   41011     Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d = Dispatch() ) const;
   41012 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41013     template<typename Dispatch = DispatchLoaderStatic>
   41014     ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d = Dispatch() ) const;
   41015 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41016 
   41017     template<typename Dispatch = DispatchLoaderStatic>
   41018     Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d = Dispatch() ) const;
   41019 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41020     template<typename Dispatch = DispatchLoaderStatic>
   41021     ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d = Dispatch() ) const;
   41022 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41023 
   41024     template<typename Dispatch = DispatchLoaderStatic>
   41025     Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
   41026 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41027     template<typename Dispatch = DispatchLoaderStatic>
   41028     ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41029 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41030 
   41031     template<typename Dispatch = DispatchLoaderStatic>
   41032     Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
   41033 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41034     template<typename Dispatch = DispatchLoaderStatic>
   41035     ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41036 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41037 
   41038     template<typename Dispatch = DispatchLoaderStatic>
   41039     Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d = Dispatch() ) const;
   41040 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41041     template<typename Dispatch = DispatchLoaderStatic>
   41042     ResultValueType<uint64_t>::type getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const &d = Dispatch() ) const;
   41043 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41044 
   41045     template<typename Dispatch = DispatchLoaderStatic>
   41046     void getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const;
   41047 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41048     template<typename Dispatch = DispatchLoaderStatic>
   41049     PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const;
   41050 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41051 
   41052     template<typename Dispatch = DispatchLoaderStatic>
   41053     void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const;
   41054 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41055     template<typename Dispatch = DispatchLoaderStatic>
   41056     PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const;
   41057 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41058 
   41059     template<typename Dispatch = DispatchLoaderStatic>
   41060     Result bindBufferMemory2( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
   41061 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41062     template<typename Dispatch = DispatchLoaderStatic>
   41063     ResultValueType<void>::type bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
   41064 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41065 
   41066     template<typename Dispatch = DispatchLoaderStatic>
   41067     Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
   41068 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41069     template<typename Dispatch = DispatchLoaderStatic>
   41070     ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
   41071 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41072 
   41073     template<typename Dispatch = DispatchLoaderStatic>
   41074     Result bindImageMemory2( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
   41075 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41076     template<typename Dispatch = DispatchLoaderStatic>
   41077     ResultValueType<void>::type bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
   41078 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41079 
   41080     template<typename Dispatch = DispatchLoaderStatic>
   41081     Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
   41082 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41083     template<typename Dispatch = DispatchLoaderStatic>
   41084     ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
   41085 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41086 
   41087     template<typename Dispatch = DispatchLoaderStatic>
   41088     Result getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d = Dispatch() ) const;
   41089 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41090     template<typename Dispatch = DispatchLoaderStatic>
   41091     ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type getGroupPresentCapabilitiesKHR(Dispatch const &d = Dispatch() ) const;
   41092 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41093 
   41094     template<typename Dispatch = DispatchLoaderStatic>
   41095     Result getGroupSurfacePresentModesKHR( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d = Dispatch() ) const;
   41096 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41097     template<typename Dispatch = DispatchLoaderStatic>
   41098     ResultValueType<DeviceGroupPresentModeFlagsKHR>::type getGroupSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   41099 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41100 
   41101     template<typename Dispatch = DispatchLoaderStatic>
   41102     Result acquireNextImage2KHR( const AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const;
   41103 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41104     template<typename Dispatch = DispatchLoaderStatic>
   41105     ResultValue<uint32_t> acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d = Dispatch() ) const;
   41106 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41107 
   41108     template<typename Dispatch = DispatchLoaderStatic>
   41109     Result createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const;
   41110 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41111     template<typename Dispatch = DispatchLoaderStatic>
   41112     ResultValueType<DescriptorUpdateTemplate>::type createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41113 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41114     template<typename Dispatch = DispatchLoaderStatic>
   41115     typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41116 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41117 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41118 
   41119     template<typename Dispatch = DispatchLoaderStatic>
   41120     Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const;
   41121 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41122     template<typename Dispatch = DispatchLoaderStatic>
   41123     ResultValueType<DescriptorUpdateTemplate>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41124 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41125     template<typename Dispatch = DispatchLoaderStatic>
   41126     typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41127 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41128 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41129 
   41130     template<typename Dispatch = DispatchLoaderStatic>
   41131     void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41132 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41133     template<typename Dispatch = DispatchLoaderStatic>
   41134     void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41135 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41136 
   41137     template<typename Dispatch = DispatchLoaderStatic>
   41138     void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41139 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41140     template<typename Dispatch = DispatchLoaderStatic>
   41141     void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41142 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41143 
   41144     template<typename Dispatch = DispatchLoaderStatic>
   41145     void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41146 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41147     template<typename Dispatch = DispatchLoaderStatic>
   41148     void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41149 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41150 
   41151     template<typename Dispatch = DispatchLoaderStatic>
   41152     void updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const;
   41153 
   41154     template<typename Dispatch = DispatchLoaderStatic>
   41155     void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const;
   41156 
   41157     template<typename Dispatch = DispatchLoaderStatic>
   41158     void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata, Dispatch const &d = Dispatch() ) const;
   41159 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41160     template<typename Dispatch = DispatchLoaderStatic>
   41161     void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata, Dispatch const &d = Dispatch() ) const;
   41162 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41163 
   41164     template<typename Dispatch = DispatchLoaderStatic>
   41165     Result getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
   41166 
   41167     template<typename Dispatch = DispatchLoaderStatic>
   41168     Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d = Dispatch() ) const;
   41169 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41170     template<typename Dispatch = DispatchLoaderStatic>
   41171     ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
   41172 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41173 
   41174     template<typename Dispatch = DispatchLoaderStatic>
   41175     Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d = Dispatch() ) const;
   41176 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41177     template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>, typename Dispatch = DispatchLoaderStatic>
   41178     typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
   41179     template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>, typename Dispatch = DispatchLoaderStatic>
   41180     typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41181 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41182 
   41183     template<typename Dispatch = DispatchLoaderStatic>
   41184     void getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41185 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41186     template<typename Dispatch = DispatchLoaderStatic>
   41187     MemoryRequirements2 getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41188     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41189     StructureChain<X, Y, Z...> getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41190 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41191 
   41192     template<typename Dispatch = DispatchLoaderStatic>
   41193     void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41194 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41195     template<typename Dispatch = DispatchLoaderStatic>
   41196     MemoryRequirements2 getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41197     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41198     StructureChain<X, Y, Z...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41199 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41200 
   41201     template<typename Dispatch = DispatchLoaderStatic>
   41202     void getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41203 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41204     template<typename Dispatch = DispatchLoaderStatic>
   41205     MemoryRequirements2 getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41206     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41207     StructureChain<X, Y, Z...> getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41208 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41209 
   41210     template<typename Dispatch = DispatchLoaderStatic>
   41211     void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41212 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41213     template<typename Dispatch = DispatchLoaderStatic>
   41214     MemoryRequirements2 getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41215     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41216     StructureChain<X, Y, Z...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41217 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41218 
   41219     template<typename Dispatch = DispatchLoaderStatic>
   41220     void getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41221 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41222     template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
   41223     std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41224     template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
   41225     std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41226 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41227 
   41228     template<typename Dispatch = DispatchLoaderStatic>
   41229     void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41230 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41231     template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
   41232     std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
   41233     template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
   41234     std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41235 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41236 
   41237     template<typename Dispatch = DispatchLoaderStatic>
   41238     Result createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const;
   41239 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41240     template<typename Dispatch = DispatchLoaderStatic>
   41241     ResultValueType<SamplerYcbcrConversion>::type createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41242 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41243     template<typename Dispatch = DispatchLoaderStatic>
   41244     typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41245 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41246 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41247 
   41248     template<typename Dispatch = DispatchLoaderStatic>
   41249     Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const;
   41250 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41251     template<typename Dispatch = DispatchLoaderStatic>
   41252     ResultValueType<SamplerYcbcrConversion>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41253 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41254     template<typename Dispatch = DispatchLoaderStatic>
   41255     typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41256 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41257 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41258 
   41259     template<typename Dispatch = DispatchLoaderStatic>
   41260     void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41261 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41262     template<typename Dispatch = DispatchLoaderStatic>
   41263     void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41264 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41265 
   41266     template<typename Dispatch = DispatchLoaderStatic>
   41267     void destroy( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41268 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41269     template<typename Dispatch = DispatchLoaderStatic>
   41270     void destroy( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41271 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41272 
   41273     template<typename Dispatch = DispatchLoaderStatic>
   41274     void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41275 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41276     template<typename Dispatch = DispatchLoaderStatic>
   41277     void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41278 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41279 
   41280     template<typename Dispatch = DispatchLoaderStatic>
   41281     void getQueue2( const DeviceQueueInfo2* pQueueInfo, Queue* pQueue, Dispatch const &d = Dispatch() ) const;
   41282 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41283     template<typename Dispatch = DispatchLoaderStatic>
   41284     Queue getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d = Dispatch() ) const;
   41285 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41286 
   41287     template<typename Dispatch = DispatchLoaderStatic>
   41288     Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache, Dispatch const &d = Dispatch() ) const;
   41289 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41290     template<typename Dispatch = DispatchLoaderStatic>
   41291     ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41292 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41293     template<typename Dispatch = DispatchLoaderStatic>
   41294     typename ResultValueType<UniqueHandle<ValidationCacheEXT,Dispatch>>::type createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41295 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41296 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41297 
   41298     template<typename Dispatch = DispatchLoaderStatic>
   41299     void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41300 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41301     template<typename Dispatch = DispatchLoaderStatic>
   41302     void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41303 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41304 
   41305     template<typename Dispatch = DispatchLoaderStatic>
   41306     void destroy( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41307 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41308     template<typename Dispatch = DispatchLoaderStatic>
   41309     void destroy( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41310 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41311 
   41312     template<typename Dispatch = DispatchLoaderStatic>
   41313     Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const;
   41314 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41315     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   41316     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache, Dispatch const &d = Dispatch() ) const;
   41317     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   41318     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41319 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41320 
   41321     template<typename Dispatch = DispatchLoaderStatic>
   41322     Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches, Dispatch const &d = Dispatch() ) const;
   41323 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41324     template<typename Dispatch = DispatchLoaderStatic>
   41325     ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches, Dispatch const &d = Dispatch() ) const;
   41326 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41327 
   41328     template<typename Dispatch = DispatchLoaderStatic>
   41329     void getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const;
   41330 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41331     template<typename Dispatch = DispatchLoaderStatic>
   41332     DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
   41333     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41334     StructureChain<X, Y, Z...> getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
   41335 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41336 
   41337     template<typename Dispatch = DispatchLoaderStatic>
   41338     void getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const;
   41339 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41340     template<typename Dispatch = DispatchLoaderStatic>
   41341     DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
   41342     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41343     StructureChain<X, Y, Z...> getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
   41344 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41345 
   41346     template<typename Dispatch = DispatchLoaderStatic>
   41347     Result getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d = Dispatch() ) const;
   41348 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41349     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   41350     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const &d = Dispatch() ) const;
   41351     template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
   41352     typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41353 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41354 
   41355     template<typename Dispatch = DispatchLoaderStatic>
   41356     Result getCalibratedTimestampsEXT( uint32_t timestampCount, const CalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation, Dispatch const &d = Dispatch() ) const;
   41357 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41358     template<typename Dispatch = DispatchLoaderStatic>
   41359     ResultValueType<uint64_t>::type getCalibratedTimestampsEXT( ArrayProxy<const CalibratedTimestampInfoEXT> timestampInfos, ArrayProxy<uint64_t> timestamps, Dispatch const &d = Dispatch() ) const;
   41360 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41361 
   41362     template<typename Dispatch = DispatchLoaderStatic>
   41363     Result setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const;
   41364 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41365     template<typename Dispatch = DispatchLoaderStatic>
   41366     ResultValueType<void>::type setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const;
   41367 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41368 
   41369     template<typename Dispatch = DispatchLoaderStatic>
   41370     Result setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const;
   41371 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41372     template<typename Dispatch = DispatchLoaderStatic>
   41373     ResultValueType<void>::type setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const;
   41374 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41375 
   41376     template<typename Dispatch = DispatchLoaderStatic>
   41377     Result getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d = Dispatch() ) const;
   41378 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41379     template<typename Dispatch = DispatchLoaderStatic>
   41380     ResultValueType<MemoryHostPointerPropertiesEXT>::type getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d = Dispatch() ) const;
   41381 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41382 
   41383     template<typename Dispatch = DispatchLoaderStatic>
   41384     Result createRenderPass2KHR( const RenderPassCreateInfo2KHR* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const;
   41385 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41386     template<typename Dispatch = DispatchLoaderStatic>
   41387     ResultValueType<RenderPass>::type createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41388 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41389     template<typename Dispatch = DispatchLoaderStatic>
   41390     typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41391 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41392 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41393 
   41394 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   41395     template<typename Dispatch = DispatchLoaderStatic>
   41396     Result getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d = Dispatch() ) const;
   41397 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41398     template<typename Dispatch = DispatchLoaderStatic>
   41399     ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const;
   41400     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   41401     typename ResultValueType<StructureChain<X, Y, Z...>>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const;
   41402 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41403 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   41404 
   41405 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   41406     template<typename Dispatch = DispatchLoaderStatic>
   41407     Result getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d = Dispatch() ) const;
   41408 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41409     template<typename Dispatch = DispatchLoaderStatic>
   41410     ResultValueType<struct AHardwareBuffer*>::type getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d = Dispatch() ) const;
   41411 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41412 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   41413 
   41414 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41415     template<typename Dispatch = DispatchLoaderStatic>
   41416     Result compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const &d = Dispatch() ) const;
   41417 #else
   41418     template<typename Dispatch = DispatchLoaderStatic>
   41419     ResultValueType<void>::type compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const &d = Dispatch() ) const;
   41420 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41421 
   41422     template<typename Dispatch = DispatchLoaderStatic>
   41423     Result createAccelerationStructureNV( const AccelerationStructureCreateInfoNV* pCreateInfo, const AllocationCallbacks* pAllocator, AccelerationStructureNV* pAccelerationStructure, Dispatch const &d = Dispatch() ) const;
   41424 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41425     template<typename Dispatch = DispatchLoaderStatic>
   41426     ResultValueType<AccelerationStructureNV>::type createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41427 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41428     template<typename Dispatch = DispatchLoaderStatic>
   41429     typename ResultValueType<UniqueHandle<AccelerationStructureNV,Dispatch>>::type createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41430 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41431 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41432 
   41433     template<typename Dispatch = DispatchLoaderStatic>
   41434     void destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41435 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41436     template<typename Dispatch = DispatchLoaderStatic>
   41437     void destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41438 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41439 
   41440     template<typename Dispatch = DispatchLoaderStatic>
   41441     void destroy( AccelerationStructureNV accelerationStructure, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   41442 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41443     template<typename Dispatch = DispatchLoaderStatic>
   41444     void destroy( AccelerationStructureNV accelerationStructure, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41445 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41446 
   41447     template<typename Dispatch = DispatchLoaderStatic>
   41448     void getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV* pInfo, MemoryRequirements2KHR* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
   41449 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41450     template<typename Dispatch = DispatchLoaderStatic>
   41451     MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d = Dispatch() ) const;
   41452 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41453 
   41454     template<typename Dispatch = DispatchLoaderStatic>
   41455     Result bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const &d = Dispatch() ) const;
   41456 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41457     template<typename Dispatch = DispatchLoaderStatic>
   41458     ResultValueType<void>::type bindAccelerationStructureMemoryNV( ArrayProxy<const BindAccelerationStructureMemoryInfoNV> bindInfos, Dispatch const &d = Dispatch() ) const;
   41459 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41460 
   41461     template<typename Dispatch = DispatchLoaderStatic>
   41462     Result getRayTracingShaderGroupHandlesNV( Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const &d = Dispatch() ) const;
   41463 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41464     template <typename T, typename Dispatch = DispatchLoaderStatic>
   41465     ResultValueType<void>::type getRayTracingShaderGroupHandlesNV( Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy<T> data, Dispatch const &d = Dispatch() ) const;
   41466 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41467 
   41468     template<typename Dispatch = DispatchLoaderStatic>
   41469     Result getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, size_t dataSize, void* pData, Dispatch const &d = Dispatch() ) const;
   41470 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41471     template <typename T, typename Dispatch = DispatchLoaderStatic>
   41472     ResultValueType<void>::type getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, ArrayProxy<T> data, Dispatch const &d = Dispatch() ) const;
   41473 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41474 
   41475     template<typename Dispatch = DispatchLoaderStatic>
   41476     Result createRayTracingPipelinesNV( PipelineCache pipelineCache, uint32_t createInfoCount, const RayTracingPipelineCreateInfoNV* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const;
   41477 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41478     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   41479     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createRayTracingPipelinesNV( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41480     template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
   41481     typename ResultValueType<std::vector<Pipeline,Allocator>>::type createRayTracingPipelinesNV( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41482     template<typename Dispatch = DispatchLoaderStatic>
   41483     ResultValueType<Pipeline>::type createRayTracingPipelineNV( PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41484 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41485     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   41486     typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41487     template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
   41488     typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const;
   41489     template<typename Dispatch = DispatchLoaderStatic>
   41490     typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type createRayTracingPipelineNVUnique( PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   41491 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41492 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41493 
   41494     template<typename Dispatch = DispatchLoaderStatic>
   41495     Result getImageDrmFormatModifierPropertiesEXT( Image image, ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const &d = Dispatch() ) const;
   41496 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41497     template<typename Dispatch = DispatchLoaderStatic>
   41498     ResultValueType<ImageDrmFormatModifierPropertiesEXT>::type getImageDrmFormatModifierPropertiesEXT( Image image, Dispatch const &d = Dispatch() ) const;
   41499 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41500 
   41501 
   41502 
   41503     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
   41504     {
   41505       return m_device;
   41506     }
   41507 
   41508     explicit operator bool() const
   41509     {
   41510       return m_device != VK_NULL_HANDLE;
   41511     }
   41512 
   41513     bool operator!() const
   41514     {
   41515       return m_device == VK_NULL_HANDLE;
   41516     }
   41517 
   41518   private:
   41519     VkDevice m_device;
   41520   };
   41521 
   41522   static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
   41523 
   41524   template<typename Dispatch>
   41525   VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName, Dispatch const &d) const
   41526   {
   41527     return d.vkGetDeviceProcAddr( m_device, pName );
   41528   }
   41529 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41530   template<typename Dispatch>
   41531   VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name, Dispatch const &d ) const
   41532   {
   41533     return d.vkGetDeviceProcAddr( m_device, name.c_str() );
   41534   }
   41535 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41536 
   41537   template<typename Dispatch>
   41538   VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41539   {
   41540     d.vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41541   }
   41542 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41543   template<typename Dispatch>
   41544   VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41545   {
   41546     d.vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41547   }
   41548 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41549 
   41550   template<typename Dispatch>
   41551   VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue, Dispatch const &d) const
   41552   {
   41553     d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
   41554   }
   41555 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41556   template<typename Dispatch>
   41557   VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d ) const
   41558   {
   41559     Queue queue;
   41560     d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
   41561     return queue;
   41562   }
   41563 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41564 
   41565 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41566   template<typename Dispatch>
   41567   VULKAN_HPP_INLINE Result Device::waitIdle(Dispatch const &d) const
   41568   {
   41569     return static_cast<Result>( d.vkDeviceWaitIdle( m_device ) );
   41570   }
   41571 #else
   41572   template<typename Dispatch>
   41573   VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle(Dispatch const &d ) const
   41574   {
   41575     Result result = static_cast<Result>( d.vkDeviceWaitIdle( m_device ) );
   41576     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitIdle" );
   41577   }
   41578 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41579 
   41580   template<typename Dispatch>
   41581   VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory, Dispatch const &d) const
   41582   {
   41583     return static_cast<Result>( d.vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
   41584   }
   41585 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41586   template<typename Dispatch>
   41587   VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41588   {
   41589     DeviceMemory memory;
   41590     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 ) ) );
   41591     return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemory" );
   41592   }
   41593 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41594   template<typename Dispatch>
   41595   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DeviceMemory,Dispatch>>::type Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41596   {
   41597     DeviceMemory memory;
   41598     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 ) ) );
   41599 
   41600     ObjectFree<Device,Dispatch> deleter( *this, allocator, d );
   41601     return createResultValue<DeviceMemory,Dispatch>( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemoryUnique", deleter );
   41602   }
   41603 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41604 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41605 
   41606   template<typename Dispatch>
   41607   VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41608   {
   41609     d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41610   }
   41611 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41612   template<typename Dispatch>
   41613   VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41614   {
   41615     d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41616   }
   41617 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41618 
   41619   template<typename Dispatch>
   41620   VULKAN_HPP_INLINE void Device::free( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41621   {
   41622     d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41623   }
   41624 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41625   template<typename Dispatch>
   41626   VULKAN_HPP_INLINE void Device::free( DeviceMemory memory, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41627   {
   41628     d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41629   }
   41630 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41631 
   41632   template<typename Dispatch>
   41633   VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData, Dispatch const &d) const
   41634   {
   41635     return static_cast<Result>( d.vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
   41636   }
   41637 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41638   template<typename Dispatch>
   41639   VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, Dispatch const &d ) const
   41640   {
   41641     void* pData;
   41642     Result result = static_cast<Result>( d.vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
   41643     return createResultValue( result, pData, VULKAN_HPP_NAMESPACE_STRING"::Device::mapMemory" );
   41644   }
   41645 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41646 
   41647 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41648   template<typename Dispatch>
   41649   VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory, Dispatch const &d) const
   41650   {
   41651     d.vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
   41652   }
   41653 #else
   41654   template<typename Dispatch>
   41655   VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory, Dispatch const &d ) const
   41656   {
   41657     d.vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
   41658   }
   41659 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41660 
   41661   template<typename Dispatch>
   41662   VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d) const
   41663   {
   41664     return static_cast<Result>( d.vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
   41665   }
   41666 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41667   template<typename Dispatch>
   41668   VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d ) const
   41669   {
   41670     Result result = static_cast<Result>( d.vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
   41671     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::flushMappedMemoryRanges" );
   41672   }
   41673 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41674 
   41675   template<typename Dispatch>
   41676   VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d) const
   41677   {
   41678     return static_cast<Result>( d.vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
   41679   }
   41680 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41681   template<typename Dispatch>
   41682   VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d ) const
   41683   {
   41684     Result result = static_cast<Result>( d.vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
   41685     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::invalidateMappedMemoryRanges" );
   41686   }
   41687 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41688 
   41689   template<typename Dispatch>
   41690   VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes, Dispatch const &d) const
   41691   {
   41692     d.vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
   41693   }
   41694 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41695   template<typename Dispatch>
   41696   VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory, Dispatch const &d ) const
   41697   {
   41698     DeviceSize committedMemoryInBytes;
   41699     d.vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
   41700     return committedMemoryInBytes;
   41701   }
   41702 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41703 
   41704   template<typename Dispatch>
   41705   VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements, Dispatch const &d) const
   41706   {
   41707     d.vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
   41708   }
   41709 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41710   template<typename Dispatch>
   41711   VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer, Dispatch const &d ) const
   41712   {
   41713     MemoryRequirements memoryRequirements;
   41714     d.vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
   41715     return memoryRequirements;
   41716   }
   41717 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41718 
   41719 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41720   template<typename Dispatch>
   41721   VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d) const
   41722   {
   41723     return static_cast<Result>( d.vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
   41724   }
   41725 #else
   41726   template<typename Dispatch>
   41727   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d ) const
   41728   {
   41729     Result result = static_cast<Result>( d.vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
   41730     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory" );
   41731   }
   41732 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41733 
   41734   template<typename Dispatch>
   41735   VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements, Dispatch const &d) const
   41736   {
   41737     d.vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
   41738   }
   41739 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41740   template<typename Dispatch>
   41741   VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image, Dispatch const &d ) const
   41742   {
   41743     MemoryRequirements memoryRequirements;
   41744     d.vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
   41745     return memoryRequirements;
   41746   }
   41747 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41748 
   41749 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41750   template<typename Dispatch>
   41751   VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d) const
   41752   {
   41753     return static_cast<Result>( d.vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
   41754   }
   41755 #else
   41756   template<typename Dispatch>
   41757   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d ) const
   41758   {
   41759     Result result = static_cast<Result>( d.vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
   41760     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory" );
   41761   }
   41762 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41763 
   41764   template<typename Dispatch>
   41765   VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d) const
   41766   {
   41767     d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
   41768   }
   41769 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41770   template <typename Allocator, typename Dispatch>
   41771   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image, Dispatch const &d ) const
   41772   {
   41773     std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
   41774     uint32_t sparseMemoryRequirementCount;
   41775     d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
   41776     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   41777     d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
   41778     return sparseMemoryRequirements;
   41779   }
   41780   template <typename Allocator, typename Dispatch>
   41781   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image, Allocator const& vectorAllocator, Dispatch const &d ) const
   41782   {
   41783     std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements( vectorAllocator );
   41784     uint32_t sparseMemoryRequirementCount;
   41785     d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
   41786     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   41787     d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
   41788     return sparseMemoryRequirements;
   41789   }
   41790 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41791 
   41792   template<typename Dispatch>
   41793   VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
   41794   {
   41795     return static_cast<Result>( d.vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
   41796   }
   41797 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41798   template<typename Dispatch>
   41799   VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41800   {
   41801     Fence fence;
   41802     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 ) ) );
   41803     return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFence" );
   41804   }
   41805 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41806   template<typename Dispatch>
   41807   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Fence,Dispatch>>::type Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41808   {
   41809     Fence fence;
   41810     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 ) ) );
   41811 
   41812     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   41813     return createResultValue<Fence,Dispatch>( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFenceUnique", deleter );
   41814   }
   41815 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41816 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41817 
   41818   template<typename Dispatch>
   41819   VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41820   {
   41821     d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41822   }
   41823 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41824   template<typename Dispatch>
   41825   VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41826   {
   41827     d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41828   }
   41829 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41830 
   41831   template<typename Dispatch>
   41832   VULKAN_HPP_INLINE void Device::destroy( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41833   {
   41834     d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41835   }
   41836 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41837   template<typename Dispatch>
   41838   VULKAN_HPP_INLINE void Device::destroy( Fence fence, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41839   {
   41840     d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41841   }
   41842 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41843 
   41844   template<typename Dispatch>
   41845   VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences, Dispatch const &d) const
   41846   {
   41847     return static_cast<Result>( d.vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
   41848   }
   41849 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41850   template<typename Dispatch>
   41851   VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences, Dispatch const &d ) const
   41852   {
   41853     Result result = static_cast<Result>( d.vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
   41854     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetFences" );
   41855   }
   41856 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41857 
   41858 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41859   template<typename Dispatch>
   41860   VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const &d) const
   41861   {
   41862     return static_cast<Result>( d.vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
   41863   }
   41864 #else
   41865   template<typename Dispatch>
   41866   VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const &d ) const
   41867   {
   41868     Result result = static_cast<Result>( d.vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
   41869     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
   41870   }
   41871 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41872 
   41873   template<typename Dispatch>
   41874   VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout, Dispatch const &d) const
   41875   {
   41876     return static_cast<Result>( d.vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
   41877   }
   41878 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41879   template<typename Dispatch>
   41880   VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout, Dispatch const &d ) const
   41881   {
   41882     Result result = static_cast<Result>( d.vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
   41883     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
   41884   }
   41885 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41886 
   41887   template<typename Dispatch>
   41888   VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore, Dispatch const &d) const
   41889   {
   41890     return static_cast<Result>( d.vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
   41891   }
   41892 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41893   template<typename Dispatch>
   41894   VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41895   {
   41896     Semaphore semaphore;
   41897     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 ) ) );
   41898     return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphore" );
   41899   }
   41900 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41901   template<typename Dispatch>
   41902   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Semaphore,Dispatch>>::type Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41903   {
   41904     Semaphore semaphore;
   41905     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 ) ) );
   41906 
   41907     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   41908     return createResultValue<Semaphore,Dispatch>( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphoreUnique", deleter );
   41909   }
   41910 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41911 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41912 
   41913   template<typename Dispatch>
   41914   VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41915   {
   41916     d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41917   }
   41918 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41919   template<typename Dispatch>
   41920   VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41921   {
   41922     d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41923   }
   41924 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41925 
   41926   template<typename Dispatch>
   41927   VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41928   {
   41929     d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41930   }
   41931 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41932   template<typename Dispatch>
   41933   VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41934   {
   41935     d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41936   }
   41937 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41938 
   41939   template<typename Dispatch>
   41940   VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent, Dispatch const &d) const
   41941   {
   41942     return static_cast<Result>( d.vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
   41943   }
   41944 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41945   template<typename Dispatch>
   41946   VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41947   {
   41948     Event event;
   41949     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 ) ) );
   41950     return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEvent" );
   41951   }
   41952 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   41953   template<typename Dispatch>
   41954   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Event,Dispatch>>::type Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41955   {
   41956     Event event;
   41957     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 ) ) );
   41958 
   41959     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   41960     return createResultValue<Event,Dispatch>( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEventUnique", deleter );
   41961   }
   41962 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   41963 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41964 
   41965   template<typename Dispatch>
   41966   VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41967   {
   41968     d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41969   }
   41970 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41971   template<typename Dispatch>
   41972   VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41973   {
   41974     d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41975   }
   41976 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41977 
   41978   template<typename Dispatch>
   41979   VULKAN_HPP_INLINE void Device::destroy( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   41980   {
   41981     d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   41982   }
   41983 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41984   template<typename Dispatch>
   41985   VULKAN_HPP_INLINE void Device::destroy( Event event, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   41986   {
   41987     d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   41988   }
   41989 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   41990 
   41991 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   41992   template<typename Dispatch>
   41993   VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const &d) const
   41994   {
   41995     return static_cast<Result>( d.vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
   41996   }
   41997 #else
   41998   template<typename Dispatch>
   41999   VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const &d ) const
   42000   {
   42001     Result result = static_cast<Result>( d.vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
   42002     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
   42003   }
   42004 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42005 
   42006 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42007   template<typename Dispatch>
   42008   VULKAN_HPP_INLINE Result Device::setEvent( Event event, Dispatch const &d) const
   42009   {
   42010     return static_cast<Result>( d.vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
   42011   }
   42012 #else
   42013   template<typename Dispatch>
   42014   VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event, Dispatch const &d ) const
   42015   {
   42016     Result result = static_cast<Result>( d.vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
   42017     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setEvent" );
   42018   }
   42019 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42020 
   42021 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42022   template<typename Dispatch>
   42023   VULKAN_HPP_INLINE Result Device::resetEvent( Event event, Dispatch const &d) const
   42024   {
   42025     return static_cast<Result>( d.vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
   42026   }
   42027 #else
   42028   template<typename Dispatch>
   42029   VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event, Dispatch const &d ) const
   42030   {
   42031     Result result = static_cast<Result>( d.vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
   42032     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetEvent" );
   42033   }
   42034 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42035 
   42036   template<typename Dispatch>
   42037   VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool, Dispatch const &d) const
   42038   {
   42039     return static_cast<Result>( d.vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
   42040   }
   42041 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42042   template<typename Dispatch>
   42043   VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42044   {
   42045     QueryPool queryPool;
   42046     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 ) ) );
   42047     return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPool" );
   42048   }
   42049 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42050   template<typename Dispatch>
   42051   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<QueryPool,Dispatch>>::type Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42052   {
   42053     QueryPool queryPool;
   42054     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 ) ) );
   42055 
   42056     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42057     return createResultValue<QueryPool,Dispatch>( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPoolUnique", deleter );
   42058   }
   42059 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42060 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42061 
   42062   template<typename Dispatch>
   42063   VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42064   {
   42065     d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42066   }
   42067 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42068   template<typename Dispatch>
   42069   VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42070   {
   42071     d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42072   }
   42073 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42074 
   42075   template<typename Dispatch>
   42076   VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42077   {
   42078     d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42079   }
   42080 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42081   template<typename Dispatch>
   42082   VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42083   {
   42084     d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42085   }
   42086 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42087 
   42088   template<typename Dispatch>
   42089   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
   42090   {
   42091     return static_cast<Result>( d.vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
   42092   }
   42093 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42094   template <typename T, typename Dispatch>
   42095   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
   42096   {
   42097     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 ) ) );
   42098     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
   42099   }
   42100 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42101 
   42102   template<typename Dispatch>
   42103   VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer, Dispatch const &d) const
   42104   {
   42105     return static_cast<Result>( d.vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
   42106   }
   42107 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42108   template<typename Dispatch>
   42109   VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42110   {
   42111     Buffer buffer;
   42112     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 ) ) );
   42113     return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBuffer" );
   42114   }
   42115 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42116   template<typename Dispatch>
   42117   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Buffer,Dispatch>>::type Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42118   {
   42119     Buffer buffer;
   42120     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 ) ) );
   42121 
   42122     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42123     return createResultValue<Buffer,Dispatch>( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferUnique", deleter );
   42124   }
   42125 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42126 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42127 
   42128   template<typename Dispatch>
   42129   VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42130   {
   42131     d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42132   }
   42133 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42134   template<typename Dispatch>
   42135   VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42136   {
   42137     d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42138   }
   42139 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42140 
   42141   template<typename Dispatch>
   42142   VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42143   {
   42144     d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42145   }
   42146 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42147   template<typename Dispatch>
   42148   VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42149   {
   42150     d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42151   }
   42152 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42153 
   42154   template<typename Dispatch>
   42155   VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView, Dispatch const &d) const
   42156   {
   42157     return static_cast<Result>( d.vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
   42158   }
   42159 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42160   template<typename Dispatch>
   42161   VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42162   {
   42163     BufferView view;
   42164     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 ) ) );
   42165     return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferView" );
   42166   }
   42167 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42168   template<typename Dispatch>
   42169   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<BufferView,Dispatch>>::type Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42170   {
   42171     BufferView view;
   42172     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 ) ) );
   42173 
   42174     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42175     return createResultValue<BufferView,Dispatch>( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferViewUnique", deleter );
   42176   }
   42177 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42178 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42179 
   42180   template<typename Dispatch>
   42181   VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42182   {
   42183     d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42184   }
   42185 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42186   template<typename Dispatch>
   42187   VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42188   {
   42189     d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42190   }
   42191 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42192 
   42193   template<typename Dispatch>
   42194   VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42195   {
   42196     d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42197   }
   42198 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42199   template<typename Dispatch>
   42200   VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42201   {
   42202     d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42203   }
   42204 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42205 
   42206   template<typename Dispatch>
   42207   VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage, Dispatch const &d) const
   42208   {
   42209     return static_cast<Result>( d.vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
   42210   }
   42211 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42212   template<typename Dispatch>
   42213   VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42214   {
   42215     Image image;
   42216     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 ) ) );
   42217     return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImage" );
   42218   }
   42219 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42220   template<typename Dispatch>
   42221   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Image,Dispatch>>::type Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42222   {
   42223     Image image;
   42224     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 ) ) );
   42225 
   42226     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42227     return createResultValue<Image,Dispatch>( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageUnique", deleter );
   42228   }
   42229 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42230 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42231 
   42232   template<typename Dispatch>
   42233   VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42234   {
   42235     d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42236   }
   42237 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42238   template<typename Dispatch>
   42239   VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42240   {
   42241     d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42242   }
   42243 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42244 
   42245   template<typename Dispatch>
   42246   VULKAN_HPP_INLINE void Device::destroy( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42247   {
   42248     d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42249   }
   42250 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42251   template<typename Dispatch>
   42252   VULKAN_HPP_INLINE void Device::destroy( Image image, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42253   {
   42254     d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42255   }
   42256 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42257 
   42258   template<typename Dispatch>
   42259   VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout, Dispatch const &d) const
   42260   {
   42261     d.vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
   42262   }
   42263 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42264   template<typename Dispatch>
   42265   VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource, Dispatch const &d ) const
   42266   {
   42267     SubresourceLayout layout;
   42268     d.vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
   42269     return layout;
   42270   }
   42271 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42272 
   42273   template<typename Dispatch>
   42274   VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView, Dispatch const &d) const
   42275   {
   42276     return static_cast<Result>( d.vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
   42277   }
   42278 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42279   template<typename Dispatch>
   42280   VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42281   {
   42282     ImageView view;
   42283     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 ) ) );
   42284     return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageView" );
   42285   }
   42286 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42287   template<typename Dispatch>
   42288   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ImageView,Dispatch>>::type Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42289   {
   42290     ImageView view;
   42291     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 ) ) );
   42292 
   42293     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42294     return createResultValue<ImageView,Dispatch>( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageViewUnique", deleter );
   42295   }
   42296 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42297 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42298 
   42299   template<typename Dispatch>
   42300   VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42301   {
   42302     d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42303   }
   42304 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42305   template<typename Dispatch>
   42306   VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42307   {
   42308     d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42309   }
   42310 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42311 
   42312   template<typename Dispatch>
   42313   VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42314   {
   42315     d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42316   }
   42317 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42318   template<typename Dispatch>
   42319   VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42320   {
   42321     d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42322   }
   42323 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42324 
   42325   template<typename Dispatch>
   42326   VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule, Dispatch const &d) const
   42327   {
   42328     return static_cast<Result>( d.vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
   42329   }
   42330 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42331   template<typename Dispatch>
   42332   VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42333   {
   42334     ShaderModule shaderModule;
   42335     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 ) ) );
   42336     return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModule" );
   42337   }
   42338 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42339   template<typename Dispatch>
   42340   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ShaderModule,Dispatch>>::type Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42341   {
   42342     ShaderModule shaderModule;
   42343     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 ) ) );
   42344 
   42345     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42346     return createResultValue<ShaderModule,Dispatch>( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModuleUnique", deleter );
   42347   }
   42348 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42349 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42350 
   42351   template<typename Dispatch>
   42352   VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42353   {
   42354     d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42355   }
   42356 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42357   template<typename Dispatch>
   42358   VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42359   {
   42360     d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42361   }
   42362 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42363 
   42364   template<typename Dispatch>
   42365   VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42366   {
   42367     d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42368   }
   42369 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42370   template<typename Dispatch>
   42371   VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42372   {
   42373     d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42374   }
   42375 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42376 
   42377   template<typename Dispatch>
   42378   VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache, Dispatch const &d) const
   42379   {
   42380     return static_cast<Result>( d.vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
   42381   }
   42382 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42383   template<typename Dispatch>
   42384   VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42385   {
   42386     PipelineCache pipelineCache;
   42387     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 ) ) );
   42388     return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCache" );
   42389   }
   42390 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42391   template<typename Dispatch>
   42392   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<PipelineCache,Dispatch>>::type Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42393   {
   42394     PipelineCache pipelineCache;
   42395     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 ) ) );
   42396 
   42397     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42398     return createResultValue<PipelineCache,Dispatch>( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCacheUnique", deleter );
   42399   }
   42400 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42401 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42402 
   42403   template<typename Dispatch>
   42404   VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42405   {
   42406     d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42407   }
   42408 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42409   template<typename Dispatch>
   42410   VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42411   {
   42412     d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42413   }
   42414 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42415 
   42416   template<typename Dispatch>
   42417   VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42418   {
   42419     d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42420   }
   42421 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42422   template<typename Dispatch>
   42423   VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42424   {
   42425     d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42426   }
   42427 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42428 
   42429   template<typename Dispatch>
   42430   VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d) const
   42431   {
   42432     return static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
   42433   }
   42434 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42435   template <typename Allocator, typename Dispatch>
   42436   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache, Dispatch const &d ) const
   42437   {
   42438     std::vector<uint8_t,Allocator> data;
   42439     size_t dataSize;
   42440     Result result;
   42441     do
   42442     {
   42443       result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
   42444       if ( ( result == Result::eSuccess ) && dataSize )
   42445       {
   42446         data.resize( dataSize );
   42447         result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
   42448       }
   42449     } while ( result == Result::eIncomplete );
   42450     if ( result == Result::eSuccess )
   42451     {
   42452       VULKAN_HPP_ASSERT( dataSize <= data.size() );
   42453       data.resize( dataSize );
   42454     }
   42455     return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" );
   42456   }
   42457   template <typename Allocator, typename Dispatch>
   42458   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache, Allocator const& vectorAllocator, Dispatch const &d ) const
   42459   {
   42460     std::vector<uint8_t,Allocator> data( vectorAllocator );
   42461     size_t dataSize;
   42462     Result result;
   42463     do
   42464     {
   42465       result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
   42466       if ( ( result == Result::eSuccess ) && dataSize )
   42467       {
   42468         data.resize( dataSize );
   42469         result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
   42470       }
   42471     } while ( result == Result::eIncomplete );
   42472     if ( result == Result::eSuccess )
   42473     {
   42474       VULKAN_HPP_ASSERT( dataSize <= data.size() );
   42475       data.resize( dataSize );
   42476     }
   42477     return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" );
   42478   }
   42479 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42480 
   42481   template<typename Dispatch>
   42482   VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches, Dispatch const &d) const
   42483   {
   42484     return static_cast<Result>( d.vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
   42485   }
   42486 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42487   template<typename Dispatch>
   42488   VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches, Dispatch const &d ) const
   42489   {
   42490     Result result = static_cast<Result>( d.vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
   42491     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergePipelineCaches" );
   42492   }
   42493 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42494 
   42495   template<typename Dispatch>
   42496   VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d) const
   42497   {
   42498     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 ) ) );
   42499   }
   42500 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42501   template <typename Allocator, typename Dispatch>
   42502   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
   42503   {
   42504     std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
   42505     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() ) ) );
   42506     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelines" );
   42507   }
   42508   template <typename Allocator, typename Dispatch>
   42509   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   42510   {
   42511     std::vector<Pipeline,Allocator> pipelines( createInfos.size(), vectorAllocator );
   42512     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() ) ) );
   42513     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelines" );
   42514   }
   42515   template<typename Dispatch>
   42516   VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42517   {
   42518     Pipeline pipeline;
   42519     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 ) ) );
   42520     return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipeline" );
   42521   }
   42522 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42523   template <typename Allocator, typename Dispatch>
   42524   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
   42525   {
   42526     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   42527     std::vector<UniquePipeline, Allocator> pipelines;
   42528     pipelines.reserve( createInfos.size() );
   42529     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   42530     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 ) ) );
   42531 
   42532     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42533     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   42534     {
   42535       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   42536     }
   42537 
   42538     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique" );
   42539   }
   42540   template <typename Allocator, typename Dispatch>
   42541   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   42542   {
   42543     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   42544     std::vector<UniquePipeline, Allocator> pipelines;
   42545     pipelines.reserve( createInfos.size() );
   42546     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   42547     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 ) ) );
   42548 
   42549     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42550     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   42551     {
   42552       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   42553     }
   42554 
   42555     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique" );
   42556   }
   42557   template<typename Dispatch>
   42558   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42559   {
   42560     Pipeline pipeline;
   42561     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 ) ) );
   42562 
   42563     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42564     return createResultValue<Pipeline,Dispatch>( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelineUnique", deleter );
   42565   }
   42566 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42567 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42568 
   42569   template<typename Dispatch>
   42570   VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d) const
   42571   {
   42572     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 ) ) );
   42573   }
   42574 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42575   template <typename Allocator, typename Dispatch>
   42576   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
   42577   {
   42578     std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
   42579     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() ) ) );
   42580     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelines" );
   42581   }
   42582   template <typename Allocator, typename Dispatch>
   42583   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   42584   {
   42585     std::vector<Pipeline,Allocator> pipelines( createInfos.size(), vectorAllocator );
   42586     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() ) ) );
   42587     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelines" );
   42588   }
   42589   template<typename Dispatch>
   42590   VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42591   {
   42592     Pipeline pipeline;
   42593     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 ) ) );
   42594     return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipeline" );
   42595   }
   42596 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42597   template <typename Allocator, typename Dispatch>
   42598   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
   42599   {
   42600     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   42601     std::vector<UniquePipeline, Allocator> pipelines;
   42602     pipelines.reserve( createInfos.size() );
   42603     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   42604     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 ) ) );
   42605 
   42606     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42607     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   42608     {
   42609       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   42610     }
   42611 
   42612     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique" );
   42613   }
   42614   template <typename Allocator, typename Dispatch>
   42615   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   42616   {
   42617     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   42618     std::vector<UniquePipeline, Allocator> pipelines;
   42619     pipelines.reserve( createInfos.size() );
   42620     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   42621     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 ) ) );
   42622 
   42623     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42624     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   42625     {
   42626       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   42627     }
   42628 
   42629     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique" );
   42630   }
   42631   template<typename Dispatch>
   42632   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42633   {
   42634     Pipeline pipeline;
   42635     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 ) ) );
   42636 
   42637     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42638     return createResultValue<Pipeline,Dispatch>( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelineUnique", deleter );
   42639   }
   42640 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42641 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42642 
   42643   template<typename Dispatch>
   42644   VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42645   {
   42646     d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42647   }
   42648 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42649   template<typename Dispatch>
   42650   VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42651   {
   42652     d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42653   }
   42654 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42655 
   42656   template<typename Dispatch>
   42657   VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42658   {
   42659     d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42660   }
   42661 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42662   template<typename Dispatch>
   42663   VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42664   {
   42665     d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42666   }
   42667 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42668 
   42669   template<typename Dispatch>
   42670   VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout, Dispatch const &d) const
   42671   {
   42672     return static_cast<Result>( d.vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
   42673   }
   42674 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42675   template<typename Dispatch>
   42676   VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42677   {
   42678     PipelineLayout pipelineLayout;
   42679     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 ) ) );
   42680     return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayout" );
   42681   }
   42682 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42683   template<typename Dispatch>
   42684   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<PipelineLayout,Dispatch>>::type Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42685   {
   42686     PipelineLayout pipelineLayout;
   42687     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 ) ) );
   42688 
   42689     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42690     return createResultValue<PipelineLayout,Dispatch>( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayoutUnique", deleter );
   42691   }
   42692 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42693 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42694 
   42695   template<typename Dispatch>
   42696   VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42697   {
   42698     d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42699   }
   42700 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42701   template<typename Dispatch>
   42702   VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42703   {
   42704     d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42705   }
   42706 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42707 
   42708   template<typename Dispatch>
   42709   VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42710   {
   42711     d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42712   }
   42713 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42714   template<typename Dispatch>
   42715   VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42716   {
   42717     d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42718   }
   42719 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42720 
   42721   template<typename Dispatch>
   42722   VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler, Dispatch const &d) const
   42723   {
   42724     return static_cast<Result>( d.vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
   42725   }
   42726 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42727   template<typename Dispatch>
   42728   VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42729   {
   42730     Sampler sampler;
   42731     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 ) ) );
   42732     return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSampler" );
   42733   }
   42734 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42735   template<typename Dispatch>
   42736   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Sampler,Dispatch>>::type Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42737   {
   42738     Sampler sampler;
   42739     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 ) ) );
   42740 
   42741     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42742     return createResultValue<Sampler,Dispatch>( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerUnique", deleter );
   42743   }
   42744 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42745 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42746 
   42747   template<typename Dispatch>
   42748   VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42749   {
   42750     d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42751   }
   42752 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42753   template<typename Dispatch>
   42754   VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42755   {
   42756     d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42757   }
   42758 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42759 
   42760   template<typename Dispatch>
   42761   VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42762   {
   42763     d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42764   }
   42765 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42766   template<typename Dispatch>
   42767   VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42768   {
   42769     d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42770   }
   42771 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42772 
   42773   template<typename Dispatch>
   42774   VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout, Dispatch const &d) const
   42775   {
   42776     return static_cast<Result>( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
   42777   }
   42778 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42779   template<typename Dispatch>
   42780   VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42781   {
   42782     DescriptorSetLayout setLayout;
   42783     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 ) ) );
   42784     return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayout" );
   42785   }
   42786 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42787   template<typename Dispatch>
   42788   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorSetLayout,Dispatch>>::type Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42789   {
   42790     DescriptorSetLayout setLayout;
   42791     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 ) ) );
   42792 
   42793     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42794     return createResultValue<DescriptorSetLayout,Dispatch>( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayoutUnique", deleter );
   42795   }
   42796 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42797 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42798 
   42799   template<typename Dispatch>
   42800   VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42801   {
   42802     d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42803   }
   42804 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42805   template<typename Dispatch>
   42806   VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42807   {
   42808     d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42809   }
   42810 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42811 
   42812   template<typename Dispatch>
   42813   VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42814   {
   42815     d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42816   }
   42817 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42818   template<typename Dispatch>
   42819   VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42820   {
   42821     d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42822   }
   42823 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42824 
   42825   template<typename Dispatch>
   42826   VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool, Dispatch const &d) const
   42827   {
   42828     return static_cast<Result>( d.vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
   42829   }
   42830 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42831   template<typename Dispatch>
   42832   VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42833   {
   42834     DescriptorPool descriptorPool;
   42835     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 ) ) );
   42836     return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPool" );
   42837   }
   42838 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42839   template<typename Dispatch>
   42840   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorPool,Dispatch>>::type Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42841   {
   42842     DescriptorPool descriptorPool;
   42843     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 ) ) );
   42844 
   42845     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   42846     return createResultValue<DescriptorPool,Dispatch>( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPoolUnique", deleter );
   42847   }
   42848 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42849 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42850 
   42851   template<typename Dispatch>
   42852   VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42853   {
   42854     d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42855   }
   42856 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42857   template<typename Dispatch>
   42858   VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42859   {
   42860     d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42861   }
   42862 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42863 
   42864   template<typename Dispatch>
   42865   VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   42866   {
   42867     d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   42868   }
   42869 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42870   template<typename Dispatch>
   42871   VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42872   {
   42873     d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   42874   }
   42875 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42876 
   42877 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42878   template<typename Dispatch>
   42879   VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const &d) const
   42880   {
   42881     return static_cast<Result>( d.vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
   42882   }
   42883 #else
   42884   template<typename Dispatch>
   42885   VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const &d ) const
   42886   {
   42887     Result result = static_cast<Result>( d.vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
   42888     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetDescriptorPool" );
   42889   }
   42890 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42891 
   42892   template<typename Dispatch>
   42893   VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets, Dispatch const &d) const
   42894   {
   42895     return static_cast<Result>( d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
   42896   }
   42897 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42898   template <typename Allocator, typename Dispatch>
   42899   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const
   42900   {
   42901     std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
   42902     Result result = static_cast<Result>( d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
   42903     return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateDescriptorSets" );
   42904   }
   42905   template <typename Allocator, typename Dispatch>
   42906   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   42907   {
   42908     std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount, vectorAllocator );
   42909     Result result = static_cast<Result>( d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
   42910     return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateDescriptorSets" );
   42911   }
   42912 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   42913   template <typename Allocator, typename Dispatch>
   42914   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const
   42915   {
   42916     static_assert( sizeof( DescriptorSet ) <= sizeof( UniqueDescriptorSet ), "DescriptorSet is greater than UniqueDescriptorSet!" );
   42917     std::vector<UniqueDescriptorSet, Allocator> descriptorSets;
   42918     descriptorSets.reserve( allocateInfo.descriptorSetCount );
   42919     DescriptorSet* buffer = reinterpret_cast<DescriptorSet*>( reinterpret_cast<char*>( descriptorSets.data() ) + allocateInfo.descriptorSetCount * ( sizeof( UniqueDescriptorSet ) - sizeof( DescriptorSet ) ) );
   42920     Result result = static_cast<Result>(d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( buffer ) ) );
   42921 
   42922     PoolFree<Device,DescriptorPool,Dispatch> deleter( *this, allocateInfo.descriptorPool, d );
   42923     for ( size_t i=0 ; i<allocateInfo.descriptorSetCount ; i++ )
   42924     {
   42925       descriptorSets.push_back( UniqueDescriptorSet( buffer[i], deleter ) );
   42926     }
   42927 
   42928     return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" );
   42929   }
   42930   template <typename Allocator, typename Dispatch>
   42931   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   42932   {
   42933     static_assert( sizeof( DescriptorSet ) <= sizeof( UniqueDescriptorSet ), "DescriptorSet is greater than UniqueDescriptorSet!" );
   42934     std::vector<UniqueDescriptorSet, Allocator> descriptorSets;
   42935     descriptorSets.reserve( allocateInfo.descriptorSetCount );
   42936     DescriptorSet* buffer = reinterpret_cast<DescriptorSet*>( reinterpret_cast<char*>( descriptorSets.data() ) + allocateInfo.descriptorSetCount * ( sizeof( UniqueDescriptorSet ) - sizeof( DescriptorSet ) ) );
   42937     Result result = static_cast<Result>(d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( buffer ) ) );
   42938 
   42939     PoolFree<Device,DescriptorPool,Dispatch> deleter( *this, allocateInfo.descriptorPool, d );
   42940     for ( size_t i=0 ; i<allocateInfo.descriptorSetCount ; i++ )
   42941     {
   42942       descriptorSets.push_back( UniqueDescriptorSet( buffer[i], deleter ) );
   42943     }
   42944 
   42945     return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" );
   42946   }
   42947 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   42948 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42949 
   42950   template<typename Dispatch>
   42951   VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d) const
   42952   {
   42953     return static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
   42954   }
   42955 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42956   template<typename Dispatch>
   42957   VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d ) const
   42958   {
   42959     Result result = static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
   42960     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::freeDescriptorSets" );
   42961   }
   42962 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42963 
   42964   template<typename Dispatch>
   42965   VULKAN_HPP_INLINE Result Device::free( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d) const
   42966   {
   42967     return static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
   42968   }
   42969 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42970   template<typename Dispatch>
   42971   VULKAN_HPP_INLINE ResultValueType<void>::type Device::free( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d ) const
   42972   {
   42973     Result result = static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
   42974     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::free" );
   42975   }
   42976 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42977 
   42978   template<typename Dispatch>
   42979   VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies, Dispatch const &d) const
   42980   {
   42981     d.vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
   42982   }
   42983 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42984   template<typename Dispatch>
   42985   VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies, Dispatch const &d ) const
   42986   {
   42987     d.vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
   42988   }
   42989 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   42990 
   42991   template<typename Dispatch>
   42992   VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer, Dispatch const &d) const
   42993   {
   42994     return static_cast<Result>( d.vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
   42995   }
   42996 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   42997   template<typename Dispatch>
   42998   VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   42999   {
   43000     Framebuffer framebuffer;
   43001     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 ) ) );
   43002     return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebuffer" );
   43003   }
   43004 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43005   template<typename Dispatch>
   43006   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Framebuffer,Dispatch>>::type Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43007   {
   43008     Framebuffer framebuffer;
   43009     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 ) ) );
   43010 
   43011     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43012     return createResultValue<Framebuffer,Dispatch>( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebufferUnique", deleter );
   43013   }
   43014 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43015 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43016 
   43017   template<typename Dispatch>
   43018   VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43019   {
   43020     d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43021   }
   43022 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43023   template<typename Dispatch>
   43024   VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43025   {
   43026     d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43027   }
   43028 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43029 
   43030   template<typename Dispatch>
   43031   VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43032   {
   43033     d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43034   }
   43035 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43036   template<typename Dispatch>
   43037   VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43038   {
   43039     d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43040   }
   43041 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43042 
   43043   template<typename Dispatch>
   43044   VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d) const
   43045   {
   43046     return static_cast<Result>( d.vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
   43047   }
   43048 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43049   template<typename Dispatch>
   43050   VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43051   {
   43052     RenderPass renderPass;
   43053     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 ) ) );
   43054     return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass" );
   43055   }
   43056 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43057   template<typename Dispatch>
   43058   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43059   {
   43060     RenderPass renderPass;
   43061     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 ) ) );
   43062 
   43063     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43064     return createResultValue<RenderPass,Dispatch>( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPassUnique", deleter );
   43065   }
   43066 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43067 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43068 
   43069   template<typename Dispatch>
   43070   VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43071   {
   43072     d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43073   }
   43074 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43075   template<typename Dispatch>
   43076   VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43077   {
   43078     d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43079   }
   43080 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43081 
   43082   template<typename Dispatch>
   43083   VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43084   {
   43085     d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43086   }
   43087 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43088   template<typename Dispatch>
   43089   VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43090   {
   43091     d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43092   }
   43093 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43094 
   43095   template<typename Dispatch>
   43096   VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity, Dispatch const &d) const
   43097   {
   43098     d.vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
   43099   }
   43100 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43101   template<typename Dispatch>
   43102   VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass, Dispatch const &d ) const
   43103   {
   43104     Extent2D granularity;
   43105     d.vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
   43106     return granularity;
   43107   }
   43108 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43109 
   43110   template<typename Dispatch>
   43111   VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool, Dispatch const &d) const
   43112   {
   43113     return static_cast<Result>( d.vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
   43114   }
   43115 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43116   template<typename Dispatch>
   43117   VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43118   {
   43119     CommandPool commandPool;
   43120     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 ) ) );
   43121     return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPool" );
   43122   }
   43123 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43124   template<typename Dispatch>
   43125   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<CommandPool,Dispatch>>::type Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43126   {
   43127     CommandPool commandPool;
   43128     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 ) ) );
   43129 
   43130     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43131     return createResultValue<CommandPool,Dispatch>( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPoolUnique", deleter );
   43132   }
   43133 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43134 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43135 
   43136   template<typename Dispatch>
   43137   VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43138   {
   43139     d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43140   }
   43141 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43142   template<typename Dispatch>
   43143   VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43144   {
   43145     d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43146   }
   43147 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43148 
   43149   template<typename Dispatch>
   43150   VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43151   {
   43152     d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43153   }
   43154 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43155   template<typename Dispatch>
   43156   VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43157   {
   43158     d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43159   }
   43160 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43161 
   43162 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43163   template<typename Dispatch>
   43164   VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d) const
   43165   {
   43166     return static_cast<Result>( d.vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
   43167   }
   43168 #else
   43169   template<typename Dispatch>
   43170   VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d ) const
   43171   {
   43172     Result result = static_cast<Result>( d.vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
   43173     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetCommandPool" );
   43174   }
   43175 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43176 
   43177   template<typename Dispatch>
   43178   VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers, Dispatch const &d) const
   43179   {
   43180     return static_cast<Result>( d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
   43181   }
   43182 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43183   template <typename Allocator, typename Dispatch>
   43184   VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const
   43185   {
   43186     std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
   43187     Result result = static_cast<Result>( d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
   43188     return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateCommandBuffers" );
   43189   }
   43190   template <typename Allocator, typename Dispatch>
   43191   VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   43192   {
   43193     std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount, vectorAllocator );
   43194     Result result = static_cast<Result>( d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
   43195     return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateCommandBuffers" );
   43196   }
   43197 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43198   template <typename Allocator, typename Dispatch>
   43199   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const
   43200   {
   43201     static_assert( sizeof( CommandBuffer ) <= sizeof( UniqueCommandBuffer ), "CommandBuffer is greater than UniqueCommandBuffer!" );
   43202     std::vector<UniqueCommandBuffer, Allocator> commandBuffers;
   43203     commandBuffers.reserve( allocateInfo.commandBufferCount );
   43204     CommandBuffer* buffer = reinterpret_cast<CommandBuffer*>( reinterpret_cast<char*>( commandBuffers.data() ) + allocateInfo.commandBufferCount * ( sizeof( UniqueCommandBuffer ) - sizeof( CommandBuffer ) ) );
   43205     Result result = static_cast<Result>(d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( buffer ) ) );
   43206 
   43207     PoolFree<Device,CommandPool,Dispatch> deleter( *this, allocateInfo.commandPool, d );
   43208     for ( size_t i=0 ; i<allocateInfo.commandBufferCount ; i++ )
   43209     {
   43210       commandBuffers.push_back( UniqueCommandBuffer( buffer[i], deleter ) );
   43211     }
   43212 
   43213     return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" );
   43214   }
   43215   template <typename Allocator, typename Dispatch>
   43216   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   43217   {
   43218     static_assert( sizeof( CommandBuffer ) <= sizeof( UniqueCommandBuffer ), "CommandBuffer is greater than UniqueCommandBuffer!" );
   43219     std::vector<UniqueCommandBuffer, Allocator> commandBuffers;
   43220     commandBuffers.reserve( allocateInfo.commandBufferCount );
   43221     CommandBuffer* buffer = reinterpret_cast<CommandBuffer*>( reinterpret_cast<char*>( commandBuffers.data() ) + allocateInfo.commandBufferCount * ( sizeof( UniqueCommandBuffer ) - sizeof( CommandBuffer ) ) );
   43222     Result result = static_cast<Result>(d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( buffer ) ) );
   43223 
   43224     PoolFree<Device,CommandPool,Dispatch> deleter( *this, allocateInfo.commandPool, d );
   43225     for ( size_t i=0 ; i<allocateInfo.commandBufferCount ; i++ )
   43226     {
   43227       commandBuffers.push_back( UniqueCommandBuffer( buffer[i], deleter ) );
   43228     }
   43229 
   43230     return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" );
   43231   }
   43232 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43233 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43234 
   43235   template<typename Dispatch>
   43236   VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
   43237   {
   43238     d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
   43239   }
   43240 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43241   template<typename Dispatch>
   43242   VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
   43243   {
   43244     d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
   43245   }
   43246 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43247 
   43248   template<typename Dispatch>
   43249   VULKAN_HPP_INLINE void Device::free( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
   43250   {
   43251     d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
   43252   }
   43253 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43254   template<typename Dispatch>
   43255   VULKAN_HPP_INLINE void Device::free( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
   43256   {
   43257     d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
   43258   }
   43259 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43260 
   43261   template<typename Dispatch>
   43262   VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains, Dispatch const &d) const
   43263   {
   43264     return static_cast<Result>( d.vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
   43265   }
   43266 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43267   template <typename Allocator, typename Dispatch>
   43268   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43269   {
   43270     std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
   43271     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() ) ) );
   43272     return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainsKHR" );
   43273   }
   43274   template <typename Allocator, typename Dispatch>
   43275   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   43276   {
   43277     std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size(), vectorAllocator );
   43278     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() ) ) );
   43279     return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainsKHR" );
   43280   }
   43281   template<typename Dispatch>
   43282   VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43283   {
   43284     SwapchainKHR swapchain;
   43285     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 ) ) );
   43286     return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHR" );
   43287   }
   43288 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43289   template <typename Allocator, typename Dispatch>
   43290   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
   43291   {
   43292     static_assert( sizeof( SwapchainKHR ) <= sizeof( UniqueSwapchainKHR ), "SwapchainKHR is greater than UniqueSwapchainKHR!" );
   43293     std::vector<UniqueSwapchainKHR, Allocator> swapchainKHRs;
   43294     swapchainKHRs.reserve( createInfos.size() );
   43295     SwapchainKHR* buffer = reinterpret_cast<SwapchainKHR*>( reinterpret_cast<char*>( swapchainKHRs.data() ) + createInfos.size() * ( sizeof( UniqueSwapchainKHR ) - sizeof( SwapchainKHR ) ) );
   43296     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 ) ) );
   43297 
   43298     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43299     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   43300     {
   43301       swapchainKHRs.push_back( UniqueSwapchainKHR( buffer[i], deleter ) );
   43302     }
   43303 
   43304     return createResultValue( result, swapchainKHRs, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" );
   43305   }
   43306   template <typename Allocator, typename Dispatch>
   43307   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<SwapchainKHR,Dispatch>,Allocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   43308   {
   43309     static_assert( sizeof( SwapchainKHR ) <= sizeof( UniqueSwapchainKHR ), "SwapchainKHR is greater than UniqueSwapchainKHR!" );
   43310     std::vector<UniqueSwapchainKHR, Allocator> swapchainKHRs;
   43311     swapchainKHRs.reserve( createInfos.size() );
   43312     SwapchainKHR* buffer = reinterpret_cast<SwapchainKHR*>( reinterpret_cast<char*>( swapchainKHRs.data() ) + createInfos.size() * ( sizeof( UniqueSwapchainKHR ) - sizeof( SwapchainKHR ) ) );
   43313     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 ) ) );
   43314 
   43315     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43316     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   43317     {
   43318       swapchainKHRs.push_back( UniqueSwapchainKHR( buffer[i], deleter ) );
   43319     }
   43320 
   43321     return createResultValue( result, swapchainKHRs, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" );
   43322   }
   43323   template<typename Dispatch>
   43324   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43325   {
   43326     SwapchainKHR swapchain;
   43327     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 ) ) );
   43328 
   43329     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43330     return createResultValue<SwapchainKHR,Dispatch>( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHRUnique", deleter );
   43331   }
   43332 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43333 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43334 
   43335   template<typename Dispatch>
   43336   VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain, Dispatch const &d) const
   43337   {
   43338     return static_cast<Result>( d.vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
   43339   }
   43340 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43341   template<typename Dispatch>
   43342   VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43343   {
   43344     SwapchainKHR swapchain;
   43345     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 ) ) );
   43346     return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHR" );
   43347   }
   43348 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43349   template<typename Dispatch>
   43350   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43351   {
   43352     SwapchainKHR swapchain;
   43353     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 ) ) );
   43354 
   43355     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43356     return createResultValue<SwapchainKHR,Dispatch>( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHRUnique", deleter );
   43357   }
   43358 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43359 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43360 
   43361   template<typename Dispatch>
   43362   VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43363   {
   43364     d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43365   }
   43366 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43367   template<typename Dispatch>
   43368   VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43369   {
   43370     d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43371   }
   43372 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43373 
   43374   template<typename Dispatch>
   43375   VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43376   {
   43377     d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43378   }
   43379 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43380   template<typename Dispatch>
   43381   VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43382   {
   43383     d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43384   }
   43385 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43386 
   43387   template<typename Dispatch>
   43388   VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages, Dispatch const &d) const
   43389   {
   43390     return static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
   43391   }
   43392 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43393   template <typename Allocator, typename Dispatch>
   43394   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain, Dispatch const &d ) const
   43395   {
   43396     std::vector<Image,Allocator> swapchainImages;
   43397     uint32_t swapchainImageCount;
   43398     Result result;
   43399     do
   43400     {
   43401       result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
   43402       if ( ( result == Result::eSuccess ) && swapchainImageCount )
   43403       {
   43404         swapchainImages.resize( swapchainImageCount );
   43405         result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
   43406       }
   43407     } while ( result == Result::eIncomplete );
   43408     if ( result == Result::eSuccess )
   43409     {
   43410       VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
   43411       swapchainImages.resize( swapchainImageCount );
   43412     }
   43413     return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" );
   43414   }
   43415   template <typename Allocator, typename Dispatch>
   43416   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const
   43417   {
   43418     std::vector<Image,Allocator> swapchainImages( vectorAllocator );
   43419     uint32_t swapchainImageCount;
   43420     Result result;
   43421     do
   43422     {
   43423       result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
   43424       if ( ( result == Result::eSuccess ) && swapchainImageCount )
   43425       {
   43426         swapchainImages.resize( swapchainImageCount );
   43427         result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
   43428       }
   43429     } while ( result == Result::eIncomplete );
   43430     if ( result == Result::eSuccess )
   43431     {
   43432       VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
   43433       swapchainImages.resize( swapchainImageCount );
   43434     }
   43435     return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" );
   43436   }
   43437 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43438 
   43439   template<typename Dispatch>
   43440   VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex, Dispatch const &d) const
   43441   {
   43442     return static_cast<Result>( d.vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
   43443   }
   43444 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43445   template<typename Dispatch>
   43446   VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, Dispatch const &d ) const
   43447   {
   43448     uint32_t imageIndex;
   43449     Result result = static_cast<Result>( d.vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
   43450     return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
   43451   }
   43452 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43453 
   43454   template<typename Dispatch>
   43455   VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d) const
   43456   {
   43457     return static_cast<Result>( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
   43458   }
   43459 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43460   template<typename Dispatch>
   43461   VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d ) const
   43462   {
   43463     Result result = static_cast<Result>( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
   43464     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectNameEXT" );
   43465   }
   43466 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43467 
   43468   template<typename Dispatch>
   43469   VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d) const
   43470   {
   43471     return static_cast<Result>( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
   43472   }
   43473 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43474   template<typename Dispatch>
   43475   VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d ) const
   43476   {
   43477     Result result = static_cast<Result>( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
   43478     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectTagEXT" );
   43479   }
   43480 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43481 
   43482 #ifdef VK_USE_PLATFORM_WIN32_NV
   43483   template<typename Dispatch>
   43484   VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d) const
   43485   {
   43486     return static_cast<Result>( d.vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
   43487   }
   43488 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43489   template<typename Dispatch>
   43490   VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d ) const
   43491   {
   43492     HANDLE handle;
   43493     Result result = static_cast<Result>( d.vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
   43494     return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleNV" );
   43495   }
   43496 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43497 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   43498 
   43499   template<typename Dispatch>
   43500   VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d) const
   43501   {
   43502     return static_cast<Result>( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
   43503   }
   43504 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43505   template<typename Dispatch>
   43506   VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43507   {
   43508     IndirectCommandsLayoutNVX indirectCommandsLayout;
   43509     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 ) ) );
   43510     return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVX" );
   43511   }
   43512 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43513   template<typename Dispatch>
   43514   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<IndirectCommandsLayoutNVX,Dispatch>>::type Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43515   {
   43516     IndirectCommandsLayoutNVX indirectCommandsLayout;
   43517     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 ) ) );
   43518 
   43519     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43520     return createResultValue<IndirectCommandsLayoutNVX,Dispatch>( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVXUnique", deleter );
   43521   }
   43522 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43523 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43524 
   43525   template<typename Dispatch>
   43526   VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43527   {
   43528     d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43529   }
   43530 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43531   template<typename Dispatch>
   43532   VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43533   {
   43534     d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43535   }
   43536 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43537 
   43538   template<typename Dispatch>
   43539   VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43540   {
   43541     d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43542   }
   43543 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43544   template<typename Dispatch>
   43545   VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43546   {
   43547     d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43548   }
   43549 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43550 
   43551   template<typename Dispatch>
   43552   VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable, Dispatch const &d) const
   43553   {
   43554     return static_cast<Result>( d.vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
   43555   }
   43556 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43557   template<typename Dispatch>
   43558   VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43559   {
   43560     ObjectTableNVX objectTable;
   43561     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 ) ) );
   43562     return createResultValue( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVX" );
   43563   }
   43564 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   43565   template<typename Dispatch>
   43566   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ObjectTableNVX,Dispatch>>::type Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43567   {
   43568     ObjectTableNVX objectTable;
   43569     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 ) ) );
   43570 
   43571     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   43572     return createResultValue<ObjectTableNVX,Dispatch>( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVXUnique", deleter );
   43573   }
   43574 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   43575 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43576 
   43577   template<typename Dispatch>
   43578   VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43579   {
   43580     d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43581   }
   43582 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43583   template<typename Dispatch>
   43584   VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43585   {
   43586     d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43587   }
   43588 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43589 
   43590   template<typename Dispatch>
   43591   VULKAN_HPP_INLINE void Device::destroy( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   43592   {
   43593     d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   43594   }
   43595 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43596   template<typename Dispatch>
   43597   VULKAN_HPP_INLINE void Device::destroy( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43598   {
   43599     d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   43600   }
   43601 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43602 
   43603   template<typename Dispatch>
   43604   VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d) const
   43605   {
   43606     return static_cast<Result>( d.vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
   43607   }
   43608 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43609   template<typename Dispatch>
   43610   VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d ) const
   43611   {
   43612 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   43613     VULKAN_HPP_ASSERT( pObjectTableEntries.size() == objectIndices.size() );
   43614 #else
   43615     if ( pObjectTableEntries.size() != objectIndices.size() )
   43616     {
   43617       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
   43618     }
   43619 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   43620     Result result = static_cast<Result>( d.vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
   43621     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::registerObjectsNVX" );
   43622   }
   43623 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43624 
   43625   template<typename Dispatch>
   43626   VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d) const
   43627   {
   43628     return static_cast<Result>( d.vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
   43629   }
   43630 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43631   template<typename Dispatch>
   43632   VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d ) const
   43633   {
   43634 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   43635     VULKAN_HPP_ASSERT( objectEntryTypes.size() == objectIndices.size() );
   43636 #else
   43637     if ( objectEntryTypes.size() != objectIndices.size() )
   43638     {
   43639       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
   43640     }
   43641 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   43642     Result result = static_cast<Result>( d.vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
   43643     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::unregisterObjectsNVX" );
   43644   }
   43645 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43646 
   43647 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43648   template<typename Dispatch>
   43649   VULKAN_HPP_INLINE void Device::trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d) const
   43650   {
   43651     d.vkTrimCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
   43652   }
   43653 #else
   43654   template<typename Dispatch>
   43655   VULKAN_HPP_INLINE void Device::trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d ) const
   43656   {
   43657     d.vkTrimCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
   43658   }
   43659 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43660 
   43661 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43662   template<typename Dispatch>
   43663   VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d) const
   43664   {
   43665     d.vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
   43666   }
   43667 #else
   43668   template<typename Dispatch>
   43669   VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d ) const
   43670   {
   43671     d.vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
   43672   }
   43673 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43674 
   43675 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43676   template<typename Dispatch>
   43677   VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
   43678   {
   43679     return static_cast<Result>( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
   43680   }
   43681 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43682   template<typename Dispatch>
   43683   VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
   43684   {
   43685     HANDLE handle;
   43686     Result result = static_cast<Result>( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
   43687     return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleKHR" );
   43688   }
   43689 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43690 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43691 
   43692 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43693   template<typename Dispatch>
   43694   VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d) const
   43695   {
   43696     return static_cast<Result>( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
   43697   }
   43698 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43699   template<typename Dispatch>
   43700   VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d ) const
   43701   {
   43702     MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
   43703     Result result = static_cast<Result>( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
   43704     return createResultValue( result, memoryWin32HandleProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandlePropertiesKHR" );
   43705   }
   43706 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43707 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43708 
   43709   template<typename Dispatch>
   43710   VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
   43711   {
   43712     return static_cast<Result>( d.vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
   43713   }
   43714 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43715   template<typename Dispatch>
   43716   VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
   43717   {
   43718     int fd;
   43719     Result result = static_cast<Result>( d.vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
   43720     return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdKHR" );
   43721   }
   43722 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43723 
   43724   template<typename Dispatch>
   43725   VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d) const
   43726   {
   43727     return static_cast<Result>( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
   43728   }
   43729 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43730   template<typename Dispatch>
   43731   VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d ) const
   43732   {
   43733     MemoryFdPropertiesKHR memoryFdProperties;
   43734     Result result = static_cast<Result>( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
   43735     return createResultValue( result, memoryFdProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdPropertiesKHR" );
   43736   }
   43737 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43738 
   43739 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43740   template<typename Dispatch>
   43741   VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
   43742   {
   43743     return static_cast<Result>( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
   43744   }
   43745 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43746   template<typename Dispatch>
   43747   VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
   43748   {
   43749     HANDLE handle;
   43750     Result result = static_cast<Result>( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
   43751     return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreWin32HandleKHR" );
   43752   }
   43753 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43754 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43755 
   43756 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43757   template<typename Dispatch>
   43758   VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d) const
   43759   {
   43760     return static_cast<Result>( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
   43761   }
   43762 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43763   template<typename Dispatch>
   43764   VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d ) const
   43765   {
   43766     Result result = static_cast<Result>( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
   43767     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreWin32HandleKHR" );
   43768   }
   43769 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43770 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43771 
   43772   template<typename Dispatch>
   43773   VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
   43774   {
   43775     return static_cast<Result>( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
   43776   }
   43777 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43778   template<typename Dispatch>
   43779   VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
   43780   {
   43781     int fd;
   43782     Result result = static_cast<Result>( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
   43783     return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreFdKHR" );
   43784   }
   43785 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43786 
   43787   template<typename Dispatch>
   43788   VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d) const
   43789   {
   43790     return static_cast<Result>( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
   43791   }
   43792 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43793   template<typename Dispatch>
   43794   VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d ) const
   43795   {
   43796     Result result = static_cast<Result>( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
   43797     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreFdKHR" );
   43798   }
   43799 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43800 
   43801 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43802   template<typename Dispatch>
   43803   VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
   43804   {
   43805     return static_cast<Result>( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
   43806   }
   43807 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43808   template<typename Dispatch>
   43809   VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
   43810   {
   43811     HANDLE handle;
   43812     Result result = static_cast<Result>( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
   43813     return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceWin32HandleKHR" );
   43814   }
   43815 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43816 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43817 
   43818 #ifdef VK_USE_PLATFORM_WIN32_KHR
   43819   template<typename Dispatch>
   43820   VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d) const
   43821   {
   43822     return static_cast<Result>( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
   43823   }
   43824 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43825   template<typename Dispatch>
   43826   VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d ) const
   43827   {
   43828     Result result = static_cast<Result>( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
   43829     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceWin32HandleKHR" );
   43830   }
   43831 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43832 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   43833 
   43834   template<typename Dispatch>
   43835   VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
   43836   {
   43837     return static_cast<Result>( d.vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
   43838   }
   43839 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43840   template<typename Dispatch>
   43841   VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
   43842   {
   43843     int fd;
   43844     Result result = static_cast<Result>( d.vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
   43845     return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceFdKHR" );
   43846   }
   43847 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43848 
   43849   template<typename Dispatch>
   43850   VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d) const
   43851   {
   43852     return static_cast<Result>( d.vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
   43853   }
   43854 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43855   template<typename Dispatch>
   43856   VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d ) const
   43857   {
   43858     Result result = static_cast<Result>( d.vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
   43859     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceFdKHR" );
   43860   }
   43861 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43862 
   43863   template<typename Dispatch>
   43864   VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d) const
   43865   {
   43866     return static_cast<Result>( d.vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
   43867   }
   43868 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43869   template<typename Dispatch>
   43870   VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d ) const
   43871   {
   43872     Result result = static_cast<Result>( d.vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
   43873     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::displayPowerControlEXT" );
   43874   }
   43875 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43876 
   43877   template<typename Dispatch>
   43878   VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
   43879   {
   43880     return static_cast<Result>( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
   43881   }
   43882 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43883   template<typename Dispatch>
   43884   VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43885   {
   43886     Fence fence;
   43887     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 ) ) );
   43888     return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerEventEXT" );
   43889   }
   43890 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43891 
   43892   template<typename Dispatch>
   43893   VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
   43894   {
   43895     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 ) ) );
   43896   }
   43897 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43898   template<typename Dispatch>
   43899   VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   43900   {
   43901     Fence fence;
   43902     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 ) ) );
   43903     return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerDisplayEventEXT" );
   43904   }
   43905 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43906 
   43907   template<typename Dispatch>
   43908   VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d) const
   43909   {
   43910     return static_cast<Result>( d.vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
   43911   }
   43912 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43913   template<typename Dispatch>
   43914   VULKAN_HPP_INLINE ResultValueType<uint64_t>::type Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const &d ) const
   43915   {
   43916     uint64_t counterValue;
   43917     Result result = static_cast<Result>( d.vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
   43918     return createResultValue( result, counterValue, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainCounterEXT" );
   43919   }
   43920 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43921 
   43922   template<typename Dispatch>
   43923   VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const
   43924   {
   43925     d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( pPeerMemoryFeatures ) );
   43926   }
   43927 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43928   template<typename Dispatch>
   43929   VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const
   43930   {
   43931     PeerMemoryFeatureFlags peerMemoryFeatures;
   43932     d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( &peerMemoryFeatures ) );
   43933     return peerMemoryFeatures;
   43934   }
   43935 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43936 
   43937   template<typename Dispatch>
   43938   VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const
   43939   {
   43940     d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( pPeerMemoryFeatures ) );
   43941   }
   43942 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43943   template<typename Dispatch>
   43944   VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const
   43945   {
   43946     PeerMemoryFeatureFlags peerMemoryFeatures;
   43947     d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( &peerMemoryFeatures ) );
   43948     return peerMemoryFeatures;
   43949   }
   43950 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43951 
   43952   template<typename Dispatch>
   43953   VULKAN_HPP_INLINE Result Device::bindBufferMemory2( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const
   43954   {
   43955     return static_cast<Result>( d.vkBindBufferMemory2( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfo*>( pBindInfos ) ) );
   43956   }
   43957 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43958   template<typename Dispatch>
   43959   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d ) const
   43960   {
   43961     Result result = static_cast<Result>( d.vkBindBufferMemory2( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfo*>( bindInfos.data() ) ) );
   43962     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2" );
   43963   }
   43964 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43965 
   43966   template<typename Dispatch>
   43967   VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const
   43968   {
   43969     return static_cast<Result>( d.vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfo*>( pBindInfos ) ) );
   43970   }
   43971 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43972   template<typename Dispatch>
   43973   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d ) const
   43974   {
   43975     Result result = static_cast<Result>( d.vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfo*>( bindInfos.data() ) ) );
   43976     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2KHR" );
   43977   }
   43978 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43979 
   43980   template<typename Dispatch>
   43981   VULKAN_HPP_INLINE Result Device::bindImageMemory2( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d) const
   43982   {
   43983     return static_cast<Result>( d.vkBindImageMemory2( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfo*>( pBindInfos ) ) );
   43984   }
   43985 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   43986   template<typename Dispatch>
   43987   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d ) const
   43988   {
   43989     Result result = static_cast<Result>( d.vkBindImageMemory2( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfo*>( bindInfos.data() ) ) );
   43990     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2" );
   43991   }
   43992 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   43993 
   43994   template<typename Dispatch>
   43995   VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d) const
   43996   {
   43997     return static_cast<Result>( d.vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfo*>( pBindInfos ) ) );
   43998   }
   43999 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44000   template<typename Dispatch>
   44001   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d ) const
   44002   {
   44003     Result result = static_cast<Result>( d.vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfo*>( bindInfos.data() ) ) );
   44004     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2KHR" );
   44005   }
   44006 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44007 
   44008   template<typename Dispatch>
   44009   VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d) const
   44010   {
   44011     return static_cast<Result>( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>( pDeviceGroupPresentCapabilities ) ) );
   44012   }
   44013 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44014   template<typename Dispatch>
   44015   VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type Device::getGroupPresentCapabilitiesKHR(Dispatch const &d ) const
   44016   {
   44017     DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
   44018     Result result = static_cast<Result>( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>( &deviceGroupPresentCapabilities ) ) );
   44019     return createResultValue( result, deviceGroupPresentCapabilities, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupPresentCapabilitiesKHR" );
   44020   }
   44021 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44022 
   44023   template<typename Dispatch>
   44024   VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHR( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d) const
   44025   {
   44026     return static_cast<Result>( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR*>( pModes ) ) );
   44027   }
   44028 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44029   template<typename Dispatch>
   44030   VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHR>::type Device::getGroupSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d ) const
   44031   {
   44032     DeviceGroupPresentModeFlagsKHR modes;
   44033     Result result = static_cast<Result>( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR*>( &modes ) ) );
   44034     return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupSurfacePresentModesKHR" );
   44035   }
   44036 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44037 
   44038   template<typename Dispatch>
   44039   VULKAN_HPP_INLINE Result Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d) const
   44040   {
   44041     return static_cast<Result>( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHR*>( pAcquireInfo ), pImageIndex ) );
   44042   }
   44043 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44044   template<typename Dispatch>
   44045   VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d ) const
   44046   {
   44047     uint32_t imageIndex;
   44048     Result result = static_cast<Result>( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHR*>( &acquireInfo ), &imageIndex ) );
   44049     return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImage2KHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
   44050   }
   44051 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44052 
   44053   template<typename Dispatch>
   44054   VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const
   44055   {
   44056     return static_cast<Result>( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplate*>( pDescriptorUpdateTemplate ) ) );
   44057   }
   44058 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44059   template<typename Dispatch>
   44060   VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplate>::type Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44061   {
   44062     DescriptorUpdateTemplate descriptorUpdateTemplate;
   44063     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 ) ) );
   44064     return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplate" );
   44065   }
   44066 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44067   template<typename Dispatch>
   44068   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type Device::createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44069   {
   44070     DescriptorUpdateTemplate descriptorUpdateTemplate;
   44071     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 ) ) );
   44072 
   44073     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44074     return createResultValue<DescriptorUpdateTemplate,Dispatch>( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateUnique", deleter );
   44075   }
   44076 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44077 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44078 
   44079   template<typename Dispatch>
   44080   VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const
   44081   {
   44082     return static_cast<Result>( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplate*>( pDescriptorUpdateTemplate ) ) );
   44083   }
   44084 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44085   template<typename Dispatch>
   44086   VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplate>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44087   {
   44088     DescriptorUpdateTemplate descriptorUpdateTemplate;
   44089     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 ) ) );
   44090     return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHR" );
   44091   }
   44092 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44093   template<typename Dispatch>
   44094   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44095   {
   44096     DescriptorUpdateTemplate descriptorUpdateTemplate;
   44097     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 ) ) );
   44098 
   44099     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44100     return createResultValue<DescriptorUpdateTemplate,Dispatch>( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHRUnique", deleter );
   44101   }
   44102 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44103 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44104 
   44105   template<typename Dispatch>
   44106   VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44107   {
   44108     d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44109   }
   44110 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44111   template<typename Dispatch>
   44112   VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44113   {
   44114     d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44115   }
   44116 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44117 
   44118   template<typename Dispatch>
   44119   VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44120   {
   44121     d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44122   }
   44123 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44124   template<typename Dispatch>
   44125   VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44126   {
   44127     d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44128   }
   44129 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44130 
   44131   template<typename Dispatch>
   44132   VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44133   {
   44134     d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44135   }
   44136 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44137   template<typename Dispatch>
   44138   VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44139   {
   44140     d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44141   }
   44142 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44143 
   44144 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44145   template<typename Dispatch>
   44146   VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const
   44147   {
   44148     d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
   44149   }
   44150 #else
   44151   template<typename Dispatch>
   44152   VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const
   44153   {
   44154     d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
   44155   }
   44156 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44157 
   44158 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44159   template<typename Dispatch>
   44160   VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const
   44161   {
   44162     d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
   44163   }
   44164 #else
   44165   template<typename Dispatch>
   44166   VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const
   44167   {
   44168     d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
   44169   }
   44170 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44171 
   44172   template<typename Dispatch>
   44173   VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata, Dispatch const &d) const
   44174   {
   44175     d.vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
   44176   }
   44177 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44178   template<typename Dispatch>
   44179   VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata, Dispatch const &d ) const
   44180   {
   44181 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   44182     VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
   44183 #else
   44184     if ( swapchains.size() != metadata.size() )
   44185     {
   44186       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
   44187     }
   44188 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   44189     d.vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
   44190   }
   44191 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44192 
   44193 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44194   template<typename Dispatch>
   44195   VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d) const
   44196   {
   44197     return static_cast<Result>( d.vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
   44198   }
   44199 #else
   44200   template<typename Dispatch>
   44201   VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d ) const
   44202   {
   44203     Result result = static_cast<Result>( d.vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
   44204     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
   44205   }
   44206 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44207 
   44208   template<typename Dispatch>
   44209   VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d) const
   44210   {
   44211     return static_cast<Result>( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
   44212   }
   44213 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44214   template<typename Dispatch>
   44215   VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, Dispatch const &d ) const
   44216   {
   44217     RefreshCycleDurationGOOGLE displayTimingProperties;
   44218     Result result = static_cast<Result>( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
   44219     return createResultValue( result, displayTimingProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getRefreshCycleDurationGOOGLE" );
   44220   }
   44221 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44222 
   44223   template<typename Dispatch>
   44224   VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d) const
   44225   {
   44226     return static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
   44227   }
   44228 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44229   template <typename Allocator, typename Dispatch>
   44230   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const &d ) const
   44231   {
   44232     std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
   44233     uint32_t presentationTimingCount;
   44234     Result result;
   44235     do
   44236     {
   44237       result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
   44238       if ( ( result == Result::eSuccess ) && presentationTimingCount )
   44239       {
   44240         presentationTimings.resize( presentationTimingCount );
   44241         result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
   44242       }
   44243     } while ( result == Result::eIncomplete );
   44244     if ( result == Result::eSuccess )
   44245     {
   44246       VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
   44247       presentationTimings.resize( presentationTimingCount );
   44248     }
   44249     return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" );
   44250   }
   44251   template <typename Allocator, typename Dispatch>
   44252   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const
   44253   {
   44254     std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings( vectorAllocator );
   44255     uint32_t presentationTimingCount;
   44256     Result result;
   44257     do
   44258     {
   44259       result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
   44260       if ( ( result == Result::eSuccess ) && presentationTimingCount )
   44261       {
   44262         presentationTimings.resize( presentationTimingCount );
   44263         result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
   44264       }
   44265     } while ( result == Result::eIncomplete );
   44266     if ( result == Result::eSuccess )
   44267     {
   44268       VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
   44269       presentationTimings.resize( presentationTimingCount );
   44270     }
   44271     return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" );
   44272   }
   44273 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44274 
   44275   template<typename Dispatch>
   44276   VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
   44277   {
   44278     d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
   44279   }
   44280 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44281   template<typename Dispatch>
   44282   VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44283   {
   44284     MemoryRequirements2 memoryRequirements;
   44285     d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44286     return memoryRequirements;
   44287   }
   44288   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44289   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44290   {
   44291     StructureChain<X, Y, Z...> structureChain;
   44292     MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
   44293     d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44294     return structureChain;
   44295   }
   44296 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44297 
   44298   template<typename Dispatch>
   44299   VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
   44300   {
   44301     d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
   44302   }
   44303 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44304   template<typename Dispatch>
   44305   VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44306   {
   44307     MemoryRequirements2 memoryRequirements;
   44308     d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44309     return memoryRequirements;
   44310   }
   44311   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44312   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44313   {
   44314     StructureChain<X, Y, Z...> structureChain;
   44315     MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
   44316     d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44317     return structureChain;
   44318   }
   44319 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44320 
   44321   template<typename Dispatch>
   44322   VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
   44323   {
   44324     d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
   44325   }
   44326 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44327   template<typename Dispatch>
   44328   VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44329   {
   44330     MemoryRequirements2 memoryRequirements;
   44331     d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44332     return memoryRequirements;
   44333   }
   44334   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44335   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44336   {
   44337     StructureChain<X, Y, Z...> structureChain;
   44338     MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
   44339     d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44340     return structureChain;
   44341   }
   44342 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44343 
   44344   template<typename Dispatch>
   44345   VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
   44346   {
   44347     d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
   44348   }
   44349 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44350   template<typename Dispatch>
   44351   VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44352   {
   44353     MemoryRequirements2 memoryRequirements;
   44354     d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44355     return memoryRequirements;
   44356   }
   44357   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44358   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44359   {
   44360     StructureChain<X, Y, Z...> structureChain;
   44361     MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
   44362     d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
   44363     return structureChain;
   44364   }
   44365 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44366 
   44367   template<typename Dispatch>
   44368   VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const
   44369   {
   44370     d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( pSparseMemoryRequirements ) );
   44371   }
   44372 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44373   template <typename Allocator, typename Dispatch>
   44374   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44375   {
   44376     std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements;
   44377     uint32_t sparseMemoryRequirementCount;
   44378     d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
   44379     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   44380     d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
   44381     return sparseMemoryRequirements;
   44382   }
   44383   template <typename Allocator, typename Dispatch>
   44384   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const
   44385   {
   44386     std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements( vectorAllocator );
   44387     uint32_t sparseMemoryRequirementCount;
   44388     d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
   44389     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   44390     d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
   44391     return sparseMemoryRequirements;
   44392   }
   44393 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44394 
   44395   template<typename Dispatch>
   44396   VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const
   44397   {
   44398     d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( pSparseMemoryRequirements ) );
   44399   }
   44400 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44401   template <typename Allocator, typename Dispatch>
   44402   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const
   44403   {
   44404     std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements;
   44405     uint32_t sparseMemoryRequirementCount;
   44406     d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
   44407     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   44408     d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
   44409     return sparseMemoryRequirements;
   44410   }
   44411   template <typename Allocator, typename Dispatch>
   44412   VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const
   44413   {
   44414     std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements( vectorAllocator );
   44415     uint32_t sparseMemoryRequirementCount;
   44416     d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
   44417     sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
   44418     d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
   44419     return sparseMemoryRequirements;
   44420   }
   44421 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44422 
   44423   template<typename Dispatch>
   44424   VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const
   44425   {
   44426     return static_cast<Result>( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversion*>( pYcbcrConversion ) ) );
   44427   }
   44428 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44429   template<typename Dispatch>
   44430   VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversion>::type Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44431   {
   44432     SamplerYcbcrConversion ycbcrConversion;
   44433     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 ) ) );
   44434     return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversion" );
   44435   }
   44436 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44437   template<typename Dispatch>
   44438   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type Device::createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44439   {
   44440     SamplerYcbcrConversion ycbcrConversion;
   44441     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 ) ) );
   44442 
   44443     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44444     return createResultValue<SamplerYcbcrConversion,Dispatch>( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionUnique", deleter );
   44445   }
   44446 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44447 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44448 
   44449   template<typename Dispatch>
   44450   VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const
   44451   {
   44452     return static_cast<Result>( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversion*>( pYcbcrConversion ) ) );
   44453   }
   44454 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44455   template<typename Dispatch>
   44456   VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversion>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44457   {
   44458     SamplerYcbcrConversion ycbcrConversion;
   44459     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 ) ) );
   44460     return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHR" );
   44461   }
   44462 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44463   template<typename Dispatch>
   44464   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44465   {
   44466     SamplerYcbcrConversion ycbcrConversion;
   44467     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 ) ) );
   44468 
   44469     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44470     return createResultValue<SamplerYcbcrConversion,Dispatch>( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHRUnique", deleter );
   44471   }
   44472 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44473 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44474 
   44475   template<typename Dispatch>
   44476   VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44477   {
   44478     d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44479   }
   44480 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44481   template<typename Dispatch>
   44482   VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44483   {
   44484     d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44485   }
   44486 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44487 
   44488   template<typename Dispatch>
   44489   VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44490   {
   44491     d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44492   }
   44493 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44494   template<typename Dispatch>
   44495   VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44496   {
   44497     d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44498   }
   44499 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44500 
   44501   template<typename Dispatch>
   44502   VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44503   {
   44504     d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44505   }
   44506 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44507   template<typename Dispatch>
   44508   VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44509   {
   44510     d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44511   }
   44512 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44513 
   44514   template<typename Dispatch>
   44515   VULKAN_HPP_INLINE void Device::getQueue2( const DeviceQueueInfo2* pQueueInfo, Queue* pQueue, Dispatch const &d) const
   44516   {
   44517     d.vkGetDeviceQueue2( m_device, reinterpret_cast<const VkDeviceQueueInfo2*>( pQueueInfo ), reinterpret_cast<VkQueue*>( pQueue ) );
   44518   }
   44519 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44520   template<typename Dispatch>
   44521   VULKAN_HPP_INLINE Queue Device::getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d ) const
   44522   {
   44523     Queue queue;
   44524     d.vkGetDeviceQueue2( m_device, reinterpret_cast<const VkDeviceQueueInfo2*>( &queueInfo ), reinterpret_cast<VkQueue*>( &queue ) );
   44525     return queue;
   44526   }
   44527 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44528 
   44529   template<typename Dispatch>
   44530   VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache, Dispatch const &d) const
   44531   {
   44532     return static_cast<Result>( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
   44533   }
   44534 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44535   template<typename Dispatch>
   44536   VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44537   {
   44538     ValidationCacheEXT validationCache;
   44539     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 ) ) );
   44540     return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXT" );
   44541   }
   44542 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44543   template<typename Dispatch>
   44544   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ValidationCacheEXT,Dispatch>>::type Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44545   {
   44546     ValidationCacheEXT validationCache;
   44547     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 ) ) );
   44548 
   44549     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44550     return createResultValue<ValidationCacheEXT,Dispatch>( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXTUnique", deleter );
   44551   }
   44552 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44553 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44554 
   44555   template<typename Dispatch>
   44556   VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44557   {
   44558     d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44559   }
   44560 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44561   template<typename Dispatch>
   44562   VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44563   {
   44564     d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44565   }
   44566 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44567 
   44568   template<typename Dispatch>
   44569   VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44570   {
   44571     d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44572   }
   44573 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44574   template<typename Dispatch>
   44575   VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44576   {
   44577     d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44578   }
   44579 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44580 
   44581   template<typename Dispatch>
   44582   VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d) const
   44583   {
   44584     return static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
   44585   }
   44586 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44587   template <typename Allocator, typename Dispatch>
   44588   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, Dispatch const &d ) const
   44589   {
   44590     std::vector<uint8_t,Allocator> data;
   44591     size_t dataSize;
   44592     Result result;
   44593     do
   44594     {
   44595       result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
   44596       if ( ( result == Result::eSuccess ) && dataSize )
   44597       {
   44598         data.resize( dataSize );
   44599         result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
   44600       }
   44601     } while ( result == Result::eIncomplete );
   44602     if ( result == Result::eSuccess )
   44603     {
   44604       VULKAN_HPP_ASSERT( dataSize <= data.size() );
   44605       data.resize( dataSize );
   44606     }
   44607     return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" );
   44608   }
   44609   template <typename Allocator, typename Dispatch>
   44610   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, Allocator const& vectorAllocator, Dispatch const &d ) const
   44611   {
   44612     std::vector<uint8_t,Allocator> data( vectorAllocator );
   44613     size_t dataSize;
   44614     Result result;
   44615     do
   44616     {
   44617       result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
   44618       if ( ( result == Result::eSuccess ) && dataSize )
   44619       {
   44620         data.resize( dataSize );
   44621         result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
   44622       }
   44623     } while ( result == Result::eIncomplete );
   44624     if ( result == Result::eSuccess )
   44625     {
   44626       VULKAN_HPP_ASSERT( dataSize <= data.size() );
   44627       data.resize( dataSize );
   44628     }
   44629     return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" );
   44630   }
   44631 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44632 
   44633   template<typename Dispatch>
   44634   VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches, Dispatch const &d) const
   44635   {
   44636     return static_cast<Result>( d.vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
   44637   }
   44638 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44639   template<typename Dispatch>
   44640   VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches, Dispatch const &d ) const
   44641   {
   44642     Result result = static_cast<Result>( d.vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
   44643     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergeValidationCachesEXT" );
   44644   }
   44645 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44646 
   44647   template<typename Dispatch>
   44648   VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const
   44649   {
   44650     d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( pSupport ) );
   44651   }
   44652 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44653   template<typename Dispatch>
   44654   VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
   44655   {
   44656     DescriptorSetLayoutSupport support;
   44657     d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
   44658     return support;
   44659   }
   44660   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44661   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
   44662   {
   44663     StructureChain<X, Y, Z...> structureChain;
   44664     DescriptorSetLayoutSupport& support = structureChain.template get<DescriptorSetLayoutSupport>();
   44665     d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
   44666     return structureChain;
   44667   }
   44668 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44669 
   44670   template<typename Dispatch>
   44671   VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const
   44672   {
   44673     d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( pSupport ) );
   44674   }
   44675 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44676   template<typename Dispatch>
   44677   VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
   44678   {
   44679     DescriptorSetLayoutSupport support;
   44680     d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
   44681     return support;
   44682   }
   44683   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44684   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
   44685   {
   44686     StructureChain<X, Y, Z...> structureChain;
   44687     DescriptorSetLayoutSupport& support = structureChain.template get<DescriptorSetLayoutSupport>();
   44688     d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
   44689     return structureChain;
   44690   }
   44691 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44692 
   44693   template<typename Dispatch>
   44694   VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d) const
   44695   {
   44696     return static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), pInfoSize, pInfo ) );
   44697   }
   44698 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44699   template <typename Allocator, typename Dispatch>
   44700   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const &d ) const
   44701   {
   44702     std::vector<uint8_t,Allocator> info;
   44703     size_t infoSize;
   44704     Result result;
   44705     do
   44706     {
   44707       result = static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
   44708       if ( ( result == Result::eSuccess ) && infoSize )
   44709       {
   44710         info.resize( infoSize );
   44711         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() ) ) );
   44712       }
   44713     } while ( result == Result::eIncomplete );
   44714     if ( result == Result::eSuccess )
   44715     {
   44716       VULKAN_HPP_ASSERT( infoSize <= info.size() );
   44717       info.resize( infoSize );
   44718     }
   44719     return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" );
   44720   }
   44721   template <typename Allocator, typename Dispatch>
   44722   VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Allocator const& vectorAllocator, Dispatch const &d ) const
   44723   {
   44724     std::vector<uint8_t,Allocator> info( vectorAllocator );
   44725     size_t infoSize;
   44726     Result result;
   44727     do
   44728     {
   44729       result = static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
   44730       if ( ( result == Result::eSuccess ) && infoSize )
   44731       {
   44732         info.resize( infoSize );
   44733         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() ) ) );
   44734       }
   44735     } while ( result == Result::eIncomplete );
   44736     if ( result == Result::eSuccess )
   44737     {
   44738       VULKAN_HPP_ASSERT( infoSize <= info.size() );
   44739       info.resize( infoSize );
   44740     }
   44741     return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" );
   44742   }
   44743 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44744 
   44745   template<typename Dispatch>
   44746   VULKAN_HPP_INLINE Result Device::getCalibratedTimestampsEXT( uint32_t timestampCount, const CalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation, Dispatch const &d) const
   44747   {
   44748     return static_cast<Result>( d.vkGetCalibratedTimestampsEXT( m_device, timestampCount, reinterpret_cast<const VkCalibratedTimestampInfoEXT*>( pTimestampInfos ), pTimestamps, pMaxDeviation ) );
   44749   }
   44750 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44751   template<typename Dispatch>
   44752   VULKAN_HPP_INLINE ResultValueType<uint64_t>::type Device::getCalibratedTimestampsEXT( ArrayProxy<const CalibratedTimestampInfoEXT> timestampInfos, ArrayProxy<uint64_t> timestamps, Dispatch const &d ) const
   44753   {
   44754 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   44755     VULKAN_HPP_ASSERT( timestampInfos.size() == timestamps.size() );
   44756 #else
   44757     if ( timestampInfos.size() != timestamps.size() )
   44758     {
   44759       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT: timestampInfos.size() != timestamps.size()" );
   44760     }
   44761 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   44762     uint64_t maxDeviation;
   44763     Result result = static_cast<Result>( d.vkGetCalibratedTimestampsEXT( m_device, timestampInfos.size() , reinterpret_cast<const VkCalibratedTimestampInfoEXT*>( timestampInfos.data() ), timestamps.data(), &maxDeviation ) );
   44764     return createResultValue( result, maxDeviation, VULKAN_HPP_NAMESPACE_STRING"::Device::getCalibratedTimestampsEXT" );
   44765   }
   44766 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44767 
   44768   template<typename Dispatch>
   44769   VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d) const
   44770   {
   44771     return static_cast<Result>( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>( pNameInfo ) ) );
   44772   }
   44773 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44774   template<typename Dispatch>
   44775   VULKAN_HPP_INLINE ResultValueType<void>::type Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d ) const
   44776   {
   44777     Result result = static_cast<Result>( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>( &nameInfo ) ) );
   44778     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectNameEXT" );
   44779   }
   44780 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44781 
   44782   template<typename Dispatch>
   44783   VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d) const
   44784   {
   44785     return static_cast<Result>( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>( pTagInfo ) ) );
   44786   }
   44787 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44788   template<typename Dispatch>
   44789   VULKAN_HPP_INLINE ResultValueType<void>::type Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d ) const
   44790   {
   44791     Result result = static_cast<Result>( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>( &tagInfo ) ) );
   44792     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectTagEXT" );
   44793   }
   44794 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44795 
   44796   template<typename Dispatch>
   44797   VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d) const
   44798   {
   44799     return static_cast<Result>( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( pMemoryHostPointerProperties ) ) );
   44800   }
   44801 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44802   template<typename Dispatch>
   44803   VULKAN_HPP_INLINE ResultValueType<MemoryHostPointerPropertiesEXT>::type Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d ) const
   44804   {
   44805     MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
   44806     Result result = static_cast<Result>( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( &memoryHostPointerProperties ) ) );
   44807     return createResultValue( result, memoryHostPointerProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryHostPointerPropertiesEXT" );
   44808   }
   44809 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44810 
   44811   template<typename Dispatch>
   44812   VULKAN_HPP_INLINE Result Device::createRenderPass2KHR( const RenderPassCreateInfo2KHR* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d) const
   44813   {
   44814     return static_cast<Result>( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast<const VkRenderPassCreateInfo2KHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
   44815   }
   44816 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44817   template<typename Dispatch>
   44818   VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44819   {
   44820     RenderPass renderPass;
   44821     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 ) ) );
   44822     return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHR" );
   44823   }
   44824 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44825   template<typename Dispatch>
   44826   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type Device::createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44827   {
   44828     RenderPass renderPass;
   44829     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 ) ) );
   44830 
   44831     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44832     return createResultValue<RenderPass,Dispatch>( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHRUnique", deleter );
   44833   }
   44834 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44835 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44836 
   44837 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   44838   template<typename Dispatch>
   44839   VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d) const
   44840   {
   44841     return static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( pProperties ) ) );
   44842   }
   44843 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44844   template<typename Dispatch>
   44845   VULKAN_HPP_INLINE ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const
   44846   {
   44847     AndroidHardwareBufferPropertiesANDROID properties;
   44848     Result result = static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( &properties ) ) );
   44849     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" );
   44850   }
   44851   template <typename X, typename Y, typename ...Z, typename Dispatch>
   44852   VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const
   44853   {
   44854     StructureChain<X, Y, Z...> structureChain;
   44855     AndroidHardwareBufferPropertiesANDROID& properties = structureChain.template get<AndroidHardwareBufferPropertiesANDROID>();
   44856     Result result = static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( &properties ) ) );
   44857     return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" );
   44858   }
   44859 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44860 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   44861 
   44862 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   44863   template<typename Dispatch>
   44864   VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d) const
   44865   {
   44866     return static_cast<Result>( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>( pInfo ), pBuffer ) );
   44867   }
   44868 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44869   template<typename Dispatch>
   44870   VULKAN_HPP_INLINE ResultValueType<struct AHardwareBuffer*>::type Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d ) const
   44871   {
   44872     struct AHardwareBuffer* buffer;
   44873     Result result = static_cast<Result>( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>( &info ), &buffer ) );
   44874     return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryAndroidHardwareBufferANDROID" );
   44875   }
   44876 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44877 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   44878 
   44879 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44880   template<typename Dispatch>
   44881   VULKAN_HPP_INLINE Result Device::compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const &d) const
   44882   {
   44883     return static_cast<Result>( d.vkCompileDeferredNV( m_device, static_cast<VkPipeline>( pipeline ), shader ) );
   44884   }
   44885 #else
   44886   template<typename Dispatch>
   44887   VULKAN_HPP_INLINE ResultValueType<void>::type Device::compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const &d ) const
   44888   {
   44889     Result result = static_cast<Result>( d.vkCompileDeferredNV( m_device, static_cast<VkPipeline>( pipeline ), shader ) );
   44890     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::compileDeferredNV" );
   44891   }
   44892 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44893 
   44894   template<typename Dispatch>
   44895   VULKAN_HPP_INLINE Result Device::createAccelerationStructureNV( const AccelerationStructureCreateInfoNV* pCreateInfo, const AllocationCallbacks* pAllocator, AccelerationStructureNV* pAccelerationStructure, Dispatch const &d) const
   44896   {
   44897     return static_cast<Result>( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast<const VkAccelerationStructureCreateInfoNV*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkAccelerationStructureNV*>( pAccelerationStructure ) ) );
   44898   }
   44899 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44900   template<typename Dispatch>
   44901   VULKAN_HPP_INLINE ResultValueType<AccelerationStructureNV>::type Device::createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44902   {
   44903     AccelerationStructureNV accelerationStructure;
   44904     Result result = static_cast<Result>( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast<const VkAccelerationStructureCreateInfoNV*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkAccelerationStructureNV*>( &accelerationStructure ) ) );
   44905     return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING"::Device::createAccelerationStructureNV" );
   44906   }
   44907 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   44908   template<typename Dispatch>
   44909   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<AccelerationStructureNV,Dispatch>>::type Device::createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44910   {
   44911     AccelerationStructureNV accelerationStructure;
   44912     Result result = static_cast<Result>( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast<const VkAccelerationStructureCreateInfoNV*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkAccelerationStructureNV*>( &accelerationStructure ) ) );
   44913 
   44914     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   44915     return createResultValue<AccelerationStructureNV,Dispatch>( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING"::Device::createAccelerationStructureNVUnique", deleter );
   44916   }
   44917 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   44918 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44919 
   44920   template<typename Dispatch>
   44921   VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44922   {
   44923     d.vkDestroyAccelerationStructureNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44924   }
   44925 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44926   template<typename Dispatch>
   44927   VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44928   {
   44929     d.vkDestroyAccelerationStructureNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44930   }
   44931 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44932 
   44933   template<typename Dispatch>
   44934   VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureNV accelerationStructure, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   44935   {
   44936     d.vkDestroyAccelerationStructureNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   44937   }
   44938 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44939   template<typename Dispatch>
   44940   VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureNV accelerationStructure, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   44941   {
   44942     d.vkDestroyAccelerationStructureNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   44943   }
   44944 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44945 
   44946   template<typename Dispatch>
   44947   VULKAN_HPP_INLINE void Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV* pInfo, MemoryRequirements2KHR* pMemoryRequirements, Dispatch const &d) const
   44948   {
   44949     d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
   44950   }
   44951 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44952   template<typename Dispatch>
   44953   VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d ) const
   44954   {
   44955     MemoryRequirements2KHR memoryRequirements;
   44956     d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
   44957     return memoryRequirements;
   44958   }
   44959 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44960 
   44961   template<typename Dispatch>
   44962   VULKAN_HPP_INLINE Result Device::bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const &d) const
   44963   {
   44964     return static_cast<Result>( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfoCount, reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV*>( pBindInfos ) ) );
   44965   }
   44966 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44967   template<typename Dispatch>
   44968   VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindAccelerationStructureMemoryNV( ArrayProxy<const BindAccelerationStructureMemoryInfoNV> bindInfos, Dispatch const &d ) const
   44969   {
   44970     Result result = static_cast<Result>( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfos.size() , reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV*>( bindInfos.data() ) ) );
   44971     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindAccelerationStructureMemoryNV" );
   44972   }
   44973 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44974 
   44975   template<typename Dispatch>
   44976   VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesNV( Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const &d) const
   44977   {
   44978     return static_cast<Result>( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast<VkPipeline>( pipeline ), firstGroup, groupCount, dataSize, pData ) );
   44979   }
   44980 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44981   template <typename T, typename Dispatch>
   44982   VULKAN_HPP_INLINE ResultValueType<void>::type Device::getRayTracingShaderGroupHandlesNV( Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy<T> data, Dispatch const &d ) const
   44983   {
   44984     Result result = static_cast<Result>( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast<VkPipeline>( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ) , reinterpret_cast<void*>( data.data() ) ) );
   44985     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getRayTracingShaderGroupHandlesNV" );
   44986   }
   44987 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   44988 
   44989   template<typename Dispatch>
   44990   VULKAN_HPP_INLINE Result Device::getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, size_t dataSize, void* pData, Dispatch const &d) const
   44991   {
   44992     return static_cast<Result>( d.vkGetAccelerationStructureHandleNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), dataSize, pData ) );
   44993   }
   44994 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   44995   template <typename T, typename Dispatch>
   44996   VULKAN_HPP_INLINE ResultValueType<void>::type Device::getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, ArrayProxy<T> data, Dispatch const &d ) const
   44997   {
   44998     Result result = static_cast<Result>( d.vkGetAccelerationStructureHandleNV( m_device, static_cast<VkAccelerationStructureNV>( accelerationStructure ), data.size() * sizeof( T ) , reinterpret_cast<void*>( data.data() ) ) );
   44999     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getAccelerationStructureHandleNV" );
   45000   }
   45001 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45002 
   45003   template<typename Dispatch>
   45004   VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesNV( PipelineCache pipelineCache, uint32_t createInfoCount, const RayTracingPipelineCreateInfoNV* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d) const
   45005   {
   45006     return static_cast<Result>( d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
   45007   }
   45008 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45009   template <typename Allocator, typename Dispatch>
   45010   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createRayTracingPipelinesNV( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45011   {
   45012     std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
   45013     Result result = static_cast<Result>( d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
   45014     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelinesNV" );
   45015   }
   45016   template <typename Allocator, typename Dispatch>
   45017   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createRayTracingPipelinesNV( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   45018   {
   45019     std::vector<Pipeline,Allocator> pipelines( createInfos.size(), vectorAllocator );
   45020     Result result = static_cast<Result>( d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
   45021     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelinesNV" );
   45022   }
   45023   template<typename Dispatch>
   45024   VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createRayTracingPipelineNV( PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45025   {
   45026     Pipeline pipeline;
   45027     Result result = static_cast<Result>( d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
   45028     return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelineNV" );
   45029   }
   45030 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   45031   template <typename Allocator, typename Dispatch>
   45032   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45033   {
   45034     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   45035     std::vector<UniquePipeline, Allocator> pipelines;
   45036     pipelines.reserve( createInfos.size() );
   45037     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   45038     Result result = static_cast<Result>(d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( buffer ) ) );
   45039 
   45040     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   45041     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   45042     {
   45043       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   45044     }
   45045 
   45046     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique" );
   45047   }
   45048   template <typename Allocator, typename Dispatch>
   45049   VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, ArrayProxy<const RayTracingPipelineCreateInfoNV> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const& vectorAllocator, Dispatch const &d ) const
   45050   {
   45051     static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
   45052     std::vector<UniquePipeline, Allocator> pipelines;
   45053     pipelines.reserve( createInfos.size() );
   45054     Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
   45055     Result result = static_cast<Result>(d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( buffer ) ) );
   45056 
   45057     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   45058     for ( size_t i=0 ; i<createInfos.size() ; i++ )
   45059     {
   45060       pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
   45061     }
   45062 
   45063     return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique" );
   45064   }
   45065   template<typename Dispatch>
   45066   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type Device::createRayTracingPipelineNVUnique( PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45067   {
   45068     Pipeline pipeline;
   45069     Result result = static_cast<Result>( d.vkCreateRayTracingPipelinesNV( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkRayTracingPipelineCreateInfoNV*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
   45070 
   45071     ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
   45072     return createResultValue<Pipeline,Dispatch>( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelineNVUnique", deleter );
   45073   }
   45074 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   45075 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45076 
   45077   template<typename Dispatch>
   45078   VULKAN_HPP_INLINE Result Device::getImageDrmFormatModifierPropertiesEXT( Image image, ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const &d) const
   45079   {
   45080     return static_cast<Result>( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT*>( pProperties ) ) );
   45081   }
   45082 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45083   template<typename Dispatch>
   45084   VULKAN_HPP_INLINE ResultValueType<ImageDrmFormatModifierPropertiesEXT>::type Device::getImageDrmFormatModifierPropertiesEXT( Image image, Dispatch const &d ) const
   45085   {
   45086     ImageDrmFormatModifierPropertiesEXT properties;
   45087     Result result = static_cast<Result>( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT*>( &properties ) ) );
   45088     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getImageDrmFormatModifierPropertiesEXT" );
   45089   }
   45090 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45091 
   45092 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   45093 
   45094   template <typename Dispatch> class UniqueHandleTraits<Device,Dispatch> {public: using deleter = ObjectDestroy<NoParent,Dispatch>; };
   45095   using UniqueDevice = UniqueHandle<Device,DispatchLoaderStatic>;
   45096 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   45097 
   45098   class PhysicalDevice
   45099   {
   45100   public:
   45101     VULKAN_HPP_CONSTEXPR PhysicalDevice()
   45102       : m_physicalDevice(VK_NULL_HANDLE)
   45103     {}
   45104 
   45105     VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t )
   45106       : m_physicalDevice(VK_NULL_HANDLE)
   45107     {}
   45108 
   45109     VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
   45110       : m_physicalDevice( physicalDevice )
   45111     {}
   45112 
   45113 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   45114     PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
   45115     {
   45116       m_physicalDevice = physicalDevice;
   45117       return *this;
   45118     }
   45119 #endif
   45120 
   45121     PhysicalDevice & operator=( std::nullptr_t )
   45122     {
   45123       m_physicalDevice = VK_NULL_HANDLE;
   45124       return *this;
   45125     }
   45126 
   45127     bool operator==( PhysicalDevice const & rhs ) const
   45128     {
   45129       return m_physicalDevice == rhs.m_physicalDevice;
   45130     }
   45131 
   45132     bool operator!=(PhysicalDevice const & rhs ) const
   45133     {
   45134       return m_physicalDevice != rhs.m_physicalDevice;
   45135     }
   45136 
   45137     bool operator<(PhysicalDevice const & rhs ) const
   45138     {
   45139       return m_physicalDevice < rhs.m_physicalDevice;
   45140     }
   45141 
   45142     template<typename Dispatch = DispatchLoaderStatic>
   45143     void getProperties( PhysicalDeviceProperties* pProperties, Dispatch const &d = Dispatch() ) const;
   45144 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45145     template<typename Dispatch = DispatchLoaderStatic>
   45146     PhysicalDeviceProperties getProperties(Dispatch const &d = Dispatch() ) const;
   45147     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45148     StructureChain<X, Y, Z...> getProperties(Dispatch const &d = Dispatch() ) const;
   45149 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45150 
   45151     template<typename Dispatch = DispatchLoaderStatic>
   45152     void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
   45153 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45154     template <typename Allocator = std::allocator<QueueFamilyProperties>, typename Dispatch = DispatchLoaderStatic>
   45155     std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties(Dispatch const &d = Dispatch() ) const;
   45156     template <typename Allocator = std::allocator<QueueFamilyProperties>, typename Dispatch = DispatchLoaderStatic>
   45157     std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45158 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45159 
   45160     template<typename Dispatch = DispatchLoaderStatic>
   45161     void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
   45162 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45163     template<typename Dispatch = DispatchLoaderStatic>
   45164     PhysicalDeviceMemoryProperties getMemoryProperties(Dispatch const &d = Dispatch() ) const;
   45165 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45166 
   45167     template<typename Dispatch = DispatchLoaderStatic>
   45168     void getFeatures( PhysicalDeviceFeatures* pFeatures, Dispatch const &d = Dispatch() ) const;
   45169 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45170     template<typename Dispatch = DispatchLoaderStatic>
   45171     PhysicalDeviceFeatures getFeatures(Dispatch const &d = Dispatch() ) const;
   45172 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45173 
   45174     template<typename Dispatch = DispatchLoaderStatic>
   45175     void getFormatProperties( Format format, FormatProperties* pFormatProperties, Dispatch const &d = Dispatch() ) const;
   45176 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45177     template<typename Dispatch = DispatchLoaderStatic>
   45178     FormatProperties getFormatProperties( Format format, Dispatch const &d = Dispatch() ) const;
   45179 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45180 
   45181     template<typename Dispatch = DispatchLoaderStatic>
   45182     Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
   45183 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45184     template<typename Dispatch = DispatchLoaderStatic>
   45185     ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, Dispatch const &d = Dispatch() ) const;
   45186 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45187 
   45188     template<typename Dispatch = DispatchLoaderStatic>
   45189     Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice, Dispatch const &d = Dispatch() ) const;
   45190 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45191     template<typename Dispatch = DispatchLoaderStatic>
   45192     ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   45193 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   45194     template<typename Dispatch = DispatchLoaderStatic>
   45195     typename ResultValueType<UniqueHandle<Device,Dispatch>>::type createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   45196 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   45197 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45198 
   45199     template<typename Dispatch = DispatchLoaderStatic>
   45200     Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d = Dispatch() ) const;
   45201 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45202     template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
   45203     typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties(Dispatch const &d = Dispatch() ) const;
   45204     template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
   45205     typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45206 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45207 
   45208     template<typename Dispatch = DispatchLoaderStatic>
   45209     Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d = Dispatch() ) const;
   45210 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45211     template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
   45212     typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr, Dispatch const &d = Dispatch() ) const;
   45213     template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
   45214     typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45215 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45216 
   45217     template<typename Dispatch = DispatchLoaderStatic>
   45218     void getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties, Dispatch const &d = Dispatch() ) const;
   45219 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45220     template <typename Allocator = std::allocator<SparseImageFormatProperties>, typename Dispatch = DispatchLoaderStatic>
   45221     std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Dispatch const &d = Dispatch() ) const;
   45222     template <typename Allocator = std::allocator<SparseImageFormatProperties>, typename Dispatch = DispatchLoaderStatic>
   45223     std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45224 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45225 
   45226     template<typename Dispatch = DispatchLoaderStatic>
   45227     Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45228 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45229     template <typename Allocator = std::allocator<DisplayPropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45230     typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR(Dispatch const &d = Dispatch() ) const;
   45231     template <typename Allocator = std::allocator<DisplayPropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45232     typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45233 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45234 
   45235     template<typename Dispatch = DispatchLoaderStatic>
   45236     Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45237 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45238     template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45239     typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR(Dispatch const &d = Dispatch() ) const;
   45240     template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45241     typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45242 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45243 
   45244     template<typename Dispatch = DispatchLoaderStatic>
   45245     Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays, Dispatch const &d = Dispatch() ) const;
   45246 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45247     template <typename Allocator = std::allocator<DisplayKHR>, typename Dispatch = DispatchLoaderStatic>
   45248     typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d = Dispatch() ) const;
   45249     template <typename Allocator = std::allocator<DisplayKHR>, typename Dispatch = DispatchLoaderStatic>
   45250     typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45251 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45252 
   45253     template<typename Dispatch = DispatchLoaderStatic>
   45254     Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45255 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45256     template <typename Allocator = std::allocator<DisplayModePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45257     typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45258     template <typename Allocator = std::allocator<DisplayModePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
   45259     typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45260 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45261 
   45262     template<typename Dispatch = DispatchLoaderStatic>
   45263     Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode, Dispatch const &d = Dispatch() ) const;
   45264 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45265     template<typename Dispatch = DispatchLoaderStatic>
   45266     ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   45267 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45268 
   45269     template<typename Dispatch = DispatchLoaderStatic>
   45270     Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d = Dispatch() ) const;
   45271 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45272     template<typename Dispatch = DispatchLoaderStatic>
   45273     ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d = Dispatch() ) const;
   45274 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45275 
   45276     template<typename Dispatch = DispatchLoaderStatic>
   45277     Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported, Dispatch const &d = Dispatch() ) const;
   45278 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45279     template<typename Dispatch = DispatchLoaderStatic>
   45280     ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45281 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45282 
   45283     template<typename Dispatch = DispatchLoaderStatic>
   45284     Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
   45285 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45286     template<typename Dispatch = DispatchLoaderStatic>
   45287     ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45288 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45289 
   45290     template<typename Dispatch = DispatchLoaderStatic>
   45291     Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const;
   45292 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45293     template <typename Allocator = std::allocator<SurfaceFormatKHR>, typename Dispatch = DispatchLoaderStatic>
   45294     typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45295     template <typename Allocator = std::allocator<SurfaceFormatKHR>, typename Dispatch = DispatchLoaderStatic>
   45296     typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45297 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45298 
   45299     template<typename Dispatch = DispatchLoaderStatic>
   45300     Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes, Dispatch const &d = Dispatch() ) const;
   45301 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45302     template <typename Allocator = std::allocator<PresentModeKHR>, typename Dispatch = DispatchLoaderStatic>
   45303     typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45304     template <typename Allocator = std::allocator<PresentModeKHR>, typename Dispatch = DispatchLoaderStatic>
   45305     typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45306 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45307 
   45308 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   45309     template<typename Dispatch = DispatchLoaderStatic>
   45310     Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d = Dispatch() ) const;
   45311 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45312     template<typename Dispatch = DispatchLoaderStatic>
   45313     Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d = Dispatch() ) const;
   45314 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45315 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   45316 
   45317 #ifdef VK_USE_PLATFORM_WIN32_KHR
   45318     template<typename Dispatch = DispatchLoaderStatic>
   45319     Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d = Dispatch() ) const;
   45320 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   45321 
   45322 #ifdef VK_USE_PLATFORM_XLIB_KHR
   45323     template<typename Dispatch = DispatchLoaderStatic>
   45324     Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const;
   45325 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45326     template<typename Dispatch = DispatchLoaderStatic>
   45327     Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const;
   45328 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45329 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   45330 
   45331 #ifdef VK_USE_PLATFORM_XCB_KHR
   45332     template<typename Dispatch = DispatchLoaderStatic>
   45333     Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const;
   45334 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45335     template<typename Dispatch = DispatchLoaderStatic>
   45336     Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const;
   45337 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45338 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   45339 
   45340     template<typename Dispatch = DispatchLoaderStatic>
   45341     Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d = Dispatch() ) const;
   45342 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45343     template<typename Dispatch = DispatchLoaderStatic>
   45344     ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d = Dispatch() ) const;
   45345 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45346 
   45347     template<typename Dispatch = DispatchLoaderStatic>
   45348     void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d = Dispatch() ) const;
   45349 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45350     template<typename Dispatch = DispatchLoaderStatic>
   45351     DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d = Dispatch() ) const;
   45352 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45353 
   45354     template<typename Dispatch = DispatchLoaderStatic>
   45355     void getFeatures2( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const;
   45356 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45357     template<typename Dispatch = DispatchLoaderStatic>
   45358     PhysicalDeviceFeatures2 getFeatures2(Dispatch const &d = Dispatch() ) const;
   45359     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45360     StructureChain<X, Y, Z...> getFeatures2(Dispatch const &d = Dispatch() ) const;
   45361 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45362 
   45363     template<typename Dispatch = DispatchLoaderStatic>
   45364     void getFeatures2KHR( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const;
   45365 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45366     template<typename Dispatch = DispatchLoaderStatic>
   45367     PhysicalDeviceFeatures2 getFeatures2KHR(Dispatch const &d = Dispatch() ) const;
   45368     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45369     StructureChain<X, Y, Z...> getFeatures2KHR(Dispatch const &d = Dispatch() ) const;
   45370 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45371 
   45372     template<typename Dispatch = DispatchLoaderStatic>
   45373     void getProperties2( PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
   45374 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45375     template<typename Dispatch = DispatchLoaderStatic>
   45376     PhysicalDeviceProperties2 getProperties2(Dispatch const &d = Dispatch() ) const;
   45377     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45378     StructureChain<X, Y, Z...> getProperties2(Dispatch const &d = Dispatch() ) const;
   45379 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45380 
   45381     template<typename Dispatch = DispatchLoaderStatic>
   45382     void getProperties2KHR( PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
   45383 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45384     template<typename Dispatch = DispatchLoaderStatic>
   45385     PhysicalDeviceProperties2 getProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45386     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45387     StructureChain<X, Y, Z...> getProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45388 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45389 
   45390     template<typename Dispatch = DispatchLoaderStatic>
   45391     void getFormatProperties2( Format format, FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const;
   45392 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45393     template<typename Dispatch = DispatchLoaderStatic>
   45394     FormatProperties2 getFormatProperties2( Format format, Dispatch const &d = Dispatch() ) const;
   45395     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45396     StructureChain<X, Y, Z...> getFormatProperties2( Format format, Dispatch const &d = Dispatch() ) const;
   45397 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45398 
   45399     template<typename Dispatch = DispatchLoaderStatic>
   45400     void getFormatProperties2KHR( Format format, FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const;
   45401 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45402     template<typename Dispatch = DispatchLoaderStatic>
   45403     FormatProperties2 getFormatProperties2KHR( Format format, Dispatch const &d = Dispatch() ) const;
   45404     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45405     StructureChain<X, Y, Z...> getFormatProperties2KHR( Format format, Dispatch const &d = Dispatch() ) const;
   45406 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45407 
   45408     template<typename Dispatch = DispatchLoaderStatic>
   45409     Result getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
   45410 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45411     template<typename Dispatch = DispatchLoaderStatic>
   45412     ResultValueType<ImageFormatProperties2>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
   45413     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45414     typename ResultValueType<StructureChain<X, Y, Z...>>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
   45415 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45416 
   45417     template<typename Dispatch = DispatchLoaderStatic>
   45418     Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
   45419 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45420     template<typename Dispatch = DispatchLoaderStatic>
   45421     ResultValueType<ImageFormatProperties2>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
   45422     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45423     typename ResultValueType<StructureChain<X, Y, Z...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
   45424 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45425 
   45426     template<typename Dispatch = DispatchLoaderStatic>
   45427     void getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
   45428 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45429     template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
   45430     std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2(Dispatch const &d = Dispatch() ) const;
   45431     template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
   45432     std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45433 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45434 
   45435     template<typename Dispatch = DispatchLoaderStatic>
   45436     void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
   45437 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45438     template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
   45439     std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45440     template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
   45441     std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45442 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45443 
   45444     template<typename Dispatch = DispatchLoaderStatic>
   45445     void getMemoryProperties2( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
   45446 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45447     template<typename Dispatch = DispatchLoaderStatic>
   45448     PhysicalDeviceMemoryProperties2 getMemoryProperties2(Dispatch const &d = Dispatch() ) const;
   45449 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45450 
   45451     template<typename Dispatch = DispatchLoaderStatic>
   45452     void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
   45453 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45454     template<typename Dispatch = DispatchLoaderStatic>
   45455     PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45456 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45457 
   45458     template<typename Dispatch = DispatchLoaderStatic>
   45459     void getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
   45460 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45461     template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
   45462     std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const;
   45463     template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
   45464     std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45465 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45466 
   45467     template<typename Dispatch = DispatchLoaderStatic>
   45468     void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
   45469 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45470     template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
   45471     std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const;
   45472     template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
   45473     std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45474 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45475 
   45476     template<typename Dispatch = DispatchLoaderStatic>
   45477     void getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const;
   45478 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45479     template<typename Dispatch = DispatchLoaderStatic>
   45480     ExternalBufferProperties getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const;
   45481 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45482 
   45483     template<typename Dispatch = DispatchLoaderStatic>
   45484     void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const;
   45485 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45486     template<typename Dispatch = DispatchLoaderStatic>
   45487     ExternalBufferProperties getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const;
   45488 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45489 
   45490     template<typename Dispatch = DispatchLoaderStatic>
   45491     void getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const;
   45492 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45493     template<typename Dispatch = DispatchLoaderStatic>
   45494     ExternalSemaphoreProperties getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const;
   45495 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45496 
   45497     template<typename Dispatch = DispatchLoaderStatic>
   45498     void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const;
   45499 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45500     template<typename Dispatch = DispatchLoaderStatic>
   45501     ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const;
   45502 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45503 
   45504     template<typename Dispatch = DispatchLoaderStatic>
   45505     void getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const;
   45506 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45507     template<typename Dispatch = DispatchLoaderStatic>
   45508     ExternalFenceProperties getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const;
   45509 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45510 
   45511     template<typename Dispatch = DispatchLoaderStatic>
   45512     void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const;
   45513 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45514     template<typename Dispatch = DispatchLoaderStatic>
   45515     ExternalFenceProperties getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const;
   45516 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45517 
   45518 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45519     template<typename Dispatch = DispatchLoaderStatic>
   45520     Result releaseDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45521 #else
   45522     template<typename Dispatch = DispatchLoaderStatic>
   45523     ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45524 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45525 
   45526 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   45527     template<typename Dispatch = DispatchLoaderStatic>
   45528     Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45529 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45530     template<typename Dispatch = DispatchLoaderStatic>
   45531     ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45532 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45533 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   45534 
   45535 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   45536     template<typename Dispatch = DispatchLoaderStatic>
   45537     Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay, Dispatch const &d = Dispatch() ) const;
   45538 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45539     template<typename Dispatch = DispatchLoaderStatic>
   45540     ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d = Dispatch() ) const;
   45541 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45542 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   45543 
   45544     template<typename Dispatch = DispatchLoaderStatic>
   45545     Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
   45546 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45547     template<typename Dispatch = DispatchLoaderStatic>
   45548     ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45549 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45550 
   45551     template<typename Dispatch = DispatchLoaderStatic>
   45552     Result getPresentRectanglesKHR( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects, Dispatch const &d = Dispatch() ) const;
   45553 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45554     template <typename Allocator = std::allocator<Rect2D>, typename Dispatch = DispatchLoaderStatic>
   45555     typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
   45556     template <typename Allocator = std::allocator<Rect2D>, typename Dispatch = DispatchLoaderStatic>
   45557     typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45558 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45559 
   45560     template<typename Dispatch = DispatchLoaderStatic>
   45561     void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d = Dispatch() ) const;
   45562 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45563     template<typename Dispatch = DispatchLoaderStatic>
   45564     MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const &d = Dispatch() ) const;
   45565 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45566 
   45567     template<typename Dispatch = DispatchLoaderStatic>
   45568     Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
   45569 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45570     template<typename Dispatch = DispatchLoaderStatic>
   45571     ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
   45572     template <typename X, typename Y, typename ...Z, typename Dispatch = DispatchLoaderStatic>
   45573     typename ResultValueType<StructureChain<X, Y, Z...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
   45574 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45575 
   45576     template<typename Dispatch = DispatchLoaderStatic>
   45577     Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const;
   45578 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45579     template <typename Allocator = std::allocator<SurfaceFormat2KHR>, typename Dispatch = DispatchLoaderStatic>
   45580     typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
   45581     template <typename Allocator = std::allocator<SurfaceFormat2KHR>, typename Dispatch = DispatchLoaderStatic>
   45582     typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45583 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45584 
   45585     template<typename Dispatch = DispatchLoaderStatic>
   45586     Result getDisplayProperties2KHR( uint32_t* pPropertyCount, DisplayProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45587 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45588     template <typename Allocator = std::allocator<DisplayProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45589     typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type getDisplayProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45590     template <typename Allocator = std::allocator<DisplayProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45591     typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type getDisplayProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45592 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45593 
   45594     template<typename Dispatch = DispatchLoaderStatic>
   45595     Result getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, DisplayPlaneProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45596 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45597     template <typename Allocator = std::allocator<DisplayPlaneProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45598     typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type getDisplayPlaneProperties2KHR(Dispatch const &d = Dispatch() ) const;
   45599     template <typename Allocator = std::allocator<DisplayPlaneProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45600     typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type getDisplayPlaneProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45601 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45602 
   45603     template<typename Dispatch = DispatchLoaderStatic>
   45604     Result getDisplayModeProperties2KHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModeProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
   45605 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45606     template <typename Allocator = std::allocator<DisplayModeProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45607     typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
   45608     template <typename Allocator = std::allocator<DisplayModeProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
   45609     typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type getDisplayModeProperties2KHR( DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const;
   45610 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45611 
   45612     template<typename Dispatch = DispatchLoaderStatic>
   45613     Result getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR* pDisplayPlaneInfo, DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d = Dispatch() ) const;
   45614 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45615     template<typename Dispatch = DispatchLoaderStatic>
   45616     ResultValueType<DisplayPlaneCapabilities2KHR>::type getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d = Dispatch() ) const;
   45617 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45618 
   45619     template<typename Dispatch = DispatchLoaderStatic>
   45620     Result getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, TimeDomainEXT* pTimeDomains, Dispatch const &d = Dispatch() ) const;
   45621 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45622     template <typename Allocator = std::allocator<TimeDomainEXT>, typename Dispatch = DispatchLoaderStatic>
   45623     typename ResultValueType<std::vector<TimeDomainEXT,Allocator>>::type getCalibrateableTimeDomainsEXT(Dispatch const &d = Dispatch() ) const;
   45624     template <typename Allocator = std::allocator<TimeDomainEXT>, typename Dispatch = DispatchLoaderStatic>
   45625     typename ResultValueType<std::vector<TimeDomainEXT,Allocator>>::type getCalibrateableTimeDomainsEXT(Allocator const& vectorAllocator, Dispatch const &d ) const;
   45626 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45627 
   45628 
   45629 
   45630     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
   45631     {
   45632       return m_physicalDevice;
   45633     }
   45634 
   45635     explicit operator bool() const
   45636     {
   45637       return m_physicalDevice != VK_NULL_HANDLE;
   45638     }
   45639 
   45640     bool operator!() const
   45641     {
   45642       return m_physicalDevice == VK_NULL_HANDLE;
   45643     }
   45644 
   45645   private:
   45646     VkPhysicalDevice m_physicalDevice;
   45647   };
   45648 
   45649   static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
   45650 
   45651   template<typename Dispatch>
   45652   VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties, Dispatch const &d) const
   45653   {
   45654     d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
   45655   }
   45656 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45657   template<typename Dispatch>
   45658   VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties(Dispatch const &d ) const
   45659   {
   45660     PhysicalDeviceProperties properties;
   45661     d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
   45662     return properties;
   45663   }
   45664   template <typename X, typename Y, typename ...Z, typename Dispatch>
   45665   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getProperties(Dispatch const &d ) const
   45666   {
   45667     StructureChain<X, Y, Z...> structureChain;
   45668     PhysicalDeviceProperties& properties = structureChain.template get<PhysicalDeviceProperties>();
   45669     d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
   45670     return structureChain;
   45671   }
   45672 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45673 
   45674   template<typename Dispatch>
   45675   VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d) const
   45676   {
   45677     d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
   45678   }
   45679 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45680   template <typename Allocator, typename Dispatch>
   45681   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties(Dispatch const &d ) const
   45682   {
   45683     std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
   45684     uint32_t queueFamilyPropertyCount;
   45685     d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   45686     queueFamilyProperties.resize( queueFamilyPropertyCount );
   45687     d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
   45688     return queueFamilyProperties;
   45689   }
   45690   template <typename Allocator, typename Dispatch>
   45691   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties(Allocator const& vectorAllocator, Dispatch const &d ) const
   45692   {
   45693     std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties( vectorAllocator );
   45694     uint32_t queueFamilyPropertyCount;
   45695     d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   45696     queueFamilyProperties.resize( queueFamilyPropertyCount );
   45697     d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
   45698     return queueFamilyProperties;
   45699   }
   45700 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45701 
   45702   template<typename Dispatch>
   45703   VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d) const
   45704   {
   45705     d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
   45706   }
   45707 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45708   template<typename Dispatch>
   45709   VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties(Dispatch const &d ) const
   45710   {
   45711     PhysicalDeviceMemoryProperties memoryProperties;
   45712     d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
   45713     return memoryProperties;
   45714   }
   45715 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45716 
   45717   template<typename Dispatch>
   45718   VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures, Dispatch const &d) const
   45719   {
   45720     d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
   45721   }
   45722 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45723   template<typename Dispatch>
   45724   VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures(Dispatch const &d ) const
   45725   {
   45726     PhysicalDeviceFeatures features;
   45727     d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
   45728     return features;
   45729   }
   45730 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45731 
   45732   template<typename Dispatch>
   45733   VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties, Dispatch const &d) const
   45734   {
   45735     d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
   45736   }
   45737 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45738   template<typename Dispatch>
   45739   VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format, Dispatch const &d ) const
   45740   {
   45741     FormatProperties formatProperties;
   45742     d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
   45743     return formatProperties;
   45744   }
   45745 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45746 
   45747   template<typename Dispatch>
   45748   VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties, Dispatch const &d) const
   45749   {
   45750     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 ) ) );
   45751   }
   45752 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45753   template<typename Dispatch>
   45754   VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, Dispatch const &d ) const
   45755   {
   45756     ImageFormatProperties imageFormatProperties;
   45757     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 ) ) );
   45758     return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties" );
   45759   }
   45760 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45761 
   45762   template<typename Dispatch>
   45763   VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice, Dispatch const &d) const
   45764   {
   45765     return static_cast<Result>( d.vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
   45766   }
   45767 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45768   template<typename Dispatch>
   45769   VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45770   {
   45771     Device device;
   45772     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 ) ) );
   45773     return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDevice" );
   45774   }
   45775 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   45776   template<typename Dispatch>
   45777   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Device,Dispatch>>::type PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   45778   {
   45779     Device device;
   45780     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 ) ) );
   45781 
   45782     ObjectDestroy<NoParent,Dispatch> deleter( allocator, d );
   45783     return createResultValue<Device,Dispatch>( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDeviceUnique", deleter );
   45784   }
   45785 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   45786 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45787 
   45788   template<typename Dispatch>
   45789   VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d) const
   45790   {
   45791     return static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
   45792   }
   45793 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45794   template <typename Allocator, typename Dispatch>
   45795   VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties(Dispatch const &d ) const
   45796   {
   45797     std::vector<LayerProperties,Allocator> properties;
   45798     uint32_t propertyCount;
   45799     Result result;
   45800     do
   45801     {
   45802       result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
   45803       if ( ( result == Result::eSuccess ) && propertyCount )
   45804       {
   45805         properties.resize( propertyCount );
   45806         result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
   45807       }
   45808     } while ( result == Result::eIncomplete );
   45809     if ( result == Result::eSuccess )
   45810     {
   45811       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45812       properties.resize( propertyCount );
   45813     }
   45814     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" );
   45815   }
   45816   template <typename Allocator, typename Dispatch>
   45817   VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ) const
   45818   {
   45819     std::vector<LayerProperties,Allocator> properties( vectorAllocator );
   45820     uint32_t propertyCount;
   45821     Result result;
   45822     do
   45823     {
   45824       result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
   45825       if ( ( result == Result::eSuccess ) && propertyCount )
   45826       {
   45827         properties.resize( propertyCount );
   45828         result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
   45829       }
   45830     } while ( result == Result::eIncomplete );
   45831     if ( result == Result::eSuccess )
   45832     {
   45833       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45834       properties.resize( propertyCount );
   45835     }
   45836     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" );
   45837   }
   45838 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45839 
   45840   template<typename Dispatch>
   45841   VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d) const
   45842   {
   45843     return static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
   45844   }
   45845 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45846   template <typename Allocator, typename Dispatch>
   45847   VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Dispatch const &d ) const
   45848   {
   45849     std::vector<ExtensionProperties,Allocator> properties;
   45850     uint32_t propertyCount;
   45851     Result result;
   45852     do
   45853     {
   45854       result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
   45855       if ( ( result == Result::eSuccess ) && propertyCount )
   45856       {
   45857         properties.resize( propertyCount );
   45858         result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
   45859       }
   45860     } while ( result == Result::eIncomplete );
   45861     if ( result == Result::eSuccess )
   45862     {
   45863       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45864       properties.resize( propertyCount );
   45865     }
   45866     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" );
   45867   }
   45868   template <typename Allocator, typename Dispatch>
   45869   VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Allocator const& vectorAllocator, Dispatch const &d ) const
   45870   {
   45871     std::vector<ExtensionProperties,Allocator> properties( vectorAllocator );
   45872     uint32_t propertyCount;
   45873     Result result;
   45874     do
   45875     {
   45876       result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
   45877       if ( ( result == Result::eSuccess ) && propertyCount )
   45878       {
   45879         properties.resize( propertyCount );
   45880         result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
   45881       }
   45882     } while ( result == Result::eIncomplete );
   45883     if ( result == Result::eSuccess )
   45884     {
   45885       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45886       properties.resize( propertyCount );
   45887     }
   45888     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" );
   45889   }
   45890 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45891 
   45892   template<typename Dispatch>
   45893   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
   45894   {
   45895     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 ) );
   45896   }
   45897 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45898   template <typename Allocator, typename Dispatch>
   45899   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Dispatch const &d ) const
   45900   {
   45901     std::vector<SparseImageFormatProperties,Allocator> properties;
   45902     uint32_t propertyCount;
   45903     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 );
   45904     properties.resize( propertyCount );
   45905     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() ) );
   45906     return properties;
   45907   }
   45908   template <typename Allocator, typename Dispatch>
   45909   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Allocator const& vectorAllocator, Dispatch const &d ) const
   45910   {
   45911     std::vector<SparseImageFormatProperties,Allocator> properties( vectorAllocator );
   45912     uint32_t propertyCount;
   45913     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 );
   45914     properties.resize( propertyCount );
   45915     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() ) );
   45916     return properties;
   45917   }
   45918 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45919 
   45920   template<typename Dispatch>
   45921   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties, Dispatch const &d) const
   45922   {
   45923     return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
   45924   }
   45925 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45926   template <typename Allocator, typename Dispatch>
   45927   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR(Dispatch const &d ) const
   45928   {
   45929     std::vector<DisplayPropertiesKHR,Allocator> properties;
   45930     uint32_t propertyCount;
   45931     Result result;
   45932     do
   45933     {
   45934       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
   45935       if ( ( result == Result::eSuccess ) && propertyCount )
   45936       {
   45937         properties.resize( propertyCount );
   45938         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
   45939       }
   45940     } while ( result == Result::eIncomplete );
   45941     if ( result == Result::eSuccess )
   45942     {
   45943       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45944       properties.resize( propertyCount );
   45945     }
   45946     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" );
   45947   }
   45948   template <typename Allocator, typename Dispatch>
   45949   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   45950   {
   45951     std::vector<DisplayPropertiesKHR,Allocator> properties( vectorAllocator );
   45952     uint32_t propertyCount;
   45953     Result result;
   45954     do
   45955     {
   45956       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
   45957       if ( ( result == Result::eSuccess ) && propertyCount )
   45958       {
   45959         properties.resize( propertyCount );
   45960         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
   45961       }
   45962     } while ( result == Result::eIncomplete );
   45963     if ( result == Result::eSuccess )
   45964     {
   45965       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45966       properties.resize( propertyCount );
   45967     }
   45968     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" );
   45969   }
   45970 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   45971 
   45972   template<typename Dispatch>
   45973   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties, Dispatch const &d) const
   45974   {
   45975     return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
   45976   }
   45977 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   45978   template <typename Allocator, typename Dispatch>
   45979   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Dispatch const &d ) const
   45980   {
   45981     std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
   45982     uint32_t propertyCount;
   45983     Result result;
   45984     do
   45985     {
   45986       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
   45987       if ( ( result == Result::eSuccess ) && propertyCount )
   45988       {
   45989         properties.resize( propertyCount );
   45990         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
   45991       }
   45992     } while ( result == Result::eIncomplete );
   45993     if ( result == Result::eSuccess )
   45994     {
   45995       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   45996       properties.resize( propertyCount );
   45997     }
   45998     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" );
   45999   }
   46000   template <typename Allocator, typename Dispatch>
   46001   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   46002   {
   46003     std::vector<DisplayPlanePropertiesKHR,Allocator> properties( vectorAllocator );
   46004     uint32_t propertyCount;
   46005     Result result;
   46006     do
   46007     {
   46008       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
   46009       if ( ( result == Result::eSuccess ) && propertyCount )
   46010       {
   46011         properties.resize( propertyCount );
   46012         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
   46013       }
   46014     } while ( result == Result::eIncomplete );
   46015     if ( result == Result::eSuccess )
   46016     {
   46017       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   46018       properties.resize( propertyCount );
   46019     }
   46020     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" );
   46021   }
   46022 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46023 
   46024   template<typename Dispatch>
   46025   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays, Dispatch const &d) const
   46026   {
   46027     return static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
   46028   }
   46029 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46030   template <typename Allocator, typename Dispatch>
   46031   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d ) const
   46032   {
   46033     std::vector<DisplayKHR,Allocator> displays;
   46034     uint32_t displayCount;
   46035     Result result;
   46036     do
   46037     {
   46038       result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
   46039       if ( ( result == Result::eSuccess ) && displayCount )
   46040       {
   46041         displays.resize( displayCount );
   46042         result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
   46043       }
   46044     } while ( result == Result::eIncomplete );
   46045     if ( result == Result::eSuccess )
   46046     {
   46047       VULKAN_HPP_ASSERT( displayCount <= displays.size() );
   46048       displays.resize( displayCount );
   46049     }
   46050     return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
   46051   }
   46052   template <typename Allocator, typename Dispatch>
   46053   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const& vectorAllocator, Dispatch const &d ) const
   46054   {
   46055     std::vector<DisplayKHR,Allocator> displays( vectorAllocator );
   46056     uint32_t displayCount;
   46057     Result result;
   46058     do
   46059     {
   46060       result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
   46061       if ( ( result == Result::eSuccess ) && displayCount )
   46062       {
   46063         displays.resize( displayCount );
   46064         result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
   46065       }
   46066     } while ( result == Result::eIncomplete );
   46067     if ( result == Result::eSuccess )
   46068     {
   46069       VULKAN_HPP_ASSERT( displayCount <= displays.size() );
   46070       displays.resize( displayCount );
   46071     }
   46072     return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
   46073   }
   46074 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46075 
   46076   template<typename Dispatch>
   46077   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties, Dispatch const &d) const
   46078   {
   46079     return static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
   46080   }
   46081 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46082   template <typename Allocator, typename Dispatch>
   46083   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const &d ) const
   46084   {
   46085     std::vector<DisplayModePropertiesKHR,Allocator> properties;
   46086     uint32_t propertyCount;
   46087     Result result;
   46088     do
   46089     {
   46090       result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
   46091       if ( ( result == Result::eSuccess ) && propertyCount )
   46092       {
   46093         properties.resize( propertyCount );
   46094         result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
   46095       }
   46096     } while ( result == Result::eIncomplete );
   46097     if ( result == Result::eSuccess )
   46098     {
   46099       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   46100       properties.resize( propertyCount );
   46101     }
   46102     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" );
   46103   }
   46104   template <typename Allocator, typename Dispatch>
   46105   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const
   46106   {
   46107     std::vector<DisplayModePropertiesKHR,Allocator> properties( vectorAllocator );
   46108     uint32_t propertyCount;
   46109     Result result;
   46110     do
   46111     {
   46112       result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
   46113       if ( ( result == Result::eSuccess ) && propertyCount )
   46114       {
   46115         properties.resize( propertyCount );
   46116         result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
   46117       }
   46118     } while ( result == Result::eIncomplete );
   46119     if ( result == Result::eSuccess )
   46120     {
   46121       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   46122       properties.resize( propertyCount );
   46123     }
   46124     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" );
   46125   }
   46126 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46127 
   46128   template<typename Dispatch>
   46129   VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode, Dispatch const &d) const
   46130   {
   46131     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 ) ) );
   46132   }
   46133 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46134   template<typename Dispatch>
   46135   VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   46136   {
   46137     DisplayModeKHR mode;
   46138     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 ) ) );
   46139     return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDisplayModeKHR" );
   46140   }
   46141 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46142 
   46143   template<typename Dispatch>
   46144   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d) const
   46145   {
   46146     return static_cast<Result>( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
   46147   }
   46148 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46149   template<typename Dispatch>
   46150   VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d ) const
   46151   {
   46152     DisplayPlaneCapabilitiesKHR capabilities;
   46153     Result result = static_cast<Result>( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
   46154     return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
   46155   }
   46156 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46157 
   46158   template<typename Dispatch>
   46159   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported, Dispatch const &d) const
   46160   {
   46161     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
   46162   }
   46163 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46164   template<typename Dispatch>
   46165   VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const &d ) const
   46166   {
   46167     Bool32 supported;
   46168     Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
   46169     return createResultValue( result, supported, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceSupportKHR" );
   46170   }
   46171 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46172 
   46173   template<typename Dispatch>
   46174   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d) const
   46175   {
   46176     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
   46177   }
   46178 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46179   template<typename Dispatch>
   46180   VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, Dispatch const &d ) const
   46181   {
   46182     SurfaceCapabilitiesKHR surfaceCapabilities;
   46183     Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
   46184     return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilitiesKHR" );
   46185   }
   46186 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46187 
   46188   template<typename Dispatch>
   46189   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d) const
   46190   {
   46191     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
   46192   }
   46193 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46194   template <typename Allocator, typename Dispatch>
   46195   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, Dispatch const &d ) const
   46196   {
   46197     std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
   46198     uint32_t surfaceFormatCount;
   46199     Result result;
   46200     do
   46201     {
   46202       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
   46203       if ( ( result == Result::eSuccess ) && surfaceFormatCount )
   46204       {
   46205         surfaceFormats.resize( surfaceFormatCount );
   46206         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
   46207       }
   46208     } while ( result == Result::eIncomplete );
   46209     if ( result == Result::eSuccess )
   46210     {
   46211       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
   46212       surfaceFormats.resize( surfaceFormatCount );
   46213     }
   46214     return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" );
   46215   }
   46216   template <typename Allocator, typename Dispatch>
   46217   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const
   46218   {
   46219     std::vector<SurfaceFormatKHR,Allocator> surfaceFormats( vectorAllocator );
   46220     uint32_t surfaceFormatCount;
   46221     Result result;
   46222     do
   46223     {
   46224       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
   46225       if ( ( result == Result::eSuccess ) && surfaceFormatCount )
   46226       {
   46227         surfaceFormats.resize( surfaceFormatCount );
   46228         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
   46229       }
   46230     } while ( result == Result::eIncomplete );
   46231     if ( result == Result::eSuccess )
   46232     {
   46233       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
   46234       surfaceFormats.resize( surfaceFormatCount );
   46235     }
   46236     return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" );
   46237   }
   46238 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46239 
   46240   template<typename Dispatch>
   46241   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes, Dispatch const &d) const
   46242   {
   46243     return static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
   46244   }
   46245 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46246   template <typename Allocator, typename Dispatch>
   46247   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d ) const
   46248   {
   46249     std::vector<PresentModeKHR,Allocator> presentModes;
   46250     uint32_t presentModeCount;
   46251     Result result;
   46252     do
   46253     {
   46254       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
   46255       if ( ( result == Result::eSuccess ) && presentModeCount )
   46256       {
   46257         presentModes.resize( presentModeCount );
   46258         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
   46259       }
   46260     } while ( result == Result::eIncomplete );
   46261     if ( result == Result::eSuccess )
   46262     {
   46263       VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
   46264       presentModes.resize( presentModeCount );
   46265     }
   46266     return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" );
   46267   }
   46268   template <typename Allocator, typename Dispatch>
   46269   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const
   46270   {
   46271     std::vector<PresentModeKHR,Allocator> presentModes( vectorAllocator );
   46272     uint32_t presentModeCount;
   46273     Result result;
   46274     do
   46275     {
   46276       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
   46277       if ( ( result == Result::eSuccess ) && presentModeCount )
   46278       {
   46279         presentModes.resize( presentModeCount );
   46280         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
   46281       }
   46282     } while ( result == Result::eIncomplete );
   46283     if ( result == Result::eSuccess )
   46284     {
   46285       VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
   46286       presentModes.resize( presentModeCount );
   46287     }
   46288     return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" );
   46289   }
   46290 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46291 
   46292 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   46293   template<typename Dispatch>
   46294   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d) const
   46295   {
   46296     return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
   46297   }
   46298 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46299   template<typename Dispatch>
   46300   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d ) const
   46301   {
   46302     return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
   46303   }
   46304 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46305 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   46306 
   46307 #ifdef VK_USE_PLATFORM_WIN32_KHR
   46308 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46309   template<typename Dispatch>
   46310   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d) const
   46311   {
   46312     return d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
   46313   }
   46314 #else
   46315   template<typename Dispatch>
   46316   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d ) const
   46317   {
   46318     return d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
   46319   }
   46320 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46321 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   46322 
   46323 #ifdef VK_USE_PLATFORM_XLIB_KHR
   46324   template<typename Dispatch>
   46325   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d) const
   46326   {
   46327     return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
   46328   }
   46329 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46330   template<typename Dispatch>
   46331   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d ) const
   46332   {
   46333     return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
   46334   }
   46335 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46336 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   46337 
   46338 #ifdef VK_USE_PLATFORM_XCB_KHR
   46339   template<typename Dispatch>
   46340   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d) const
   46341   {
   46342     return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
   46343   }
   46344 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46345   template<typename Dispatch>
   46346   VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d ) const
   46347   {
   46348     return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
   46349   }
   46350 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46351 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   46352 
   46353   template<typename Dispatch>
   46354   VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d) const
   46355   {
   46356     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 ) ) );
   46357   }
   46358 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46359   template<typename Dispatch>
   46360   VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d ) const
   46361   {
   46362     ExternalImageFormatPropertiesNV externalImageFormatProperties;
   46363     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 ) ) );
   46364     return createResultValue( result, externalImageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getExternalImageFormatPropertiesNV" );
   46365   }
   46366 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46367 
   46368   template<typename Dispatch>
   46369   VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d) const
   46370   {
   46371     d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
   46372   }
   46373 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46374   template<typename Dispatch>
   46375   VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d ) const
   46376   {
   46377     DeviceGeneratedCommandsLimitsNVX limits;
   46378     d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
   46379     return limits;
   46380   }
   46381 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46382 
   46383   template<typename Dispatch>
   46384   VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const
   46385   {
   46386     d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( pFeatures ) );
   46387   }
   46388 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46389   template<typename Dispatch>
   46390   VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2(Dispatch const &d ) const
   46391   {
   46392     PhysicalDeviceFeatures2 features;
   46393     d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
   46394     return features;
   46395   }
   46396   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46397   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2(Dispatch const &d ) const
   46398   {
   46399     StructureChain<X, Y, Z...> structureChain;
   46400     PhysicalDeviceFeatures2& features = structureChain.template get<PhysicalDeviceFeatures2>();
   46401     d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
   46402     return structureChain;
   46403   }
   46404 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46405 
   46406   template<typename Dispatch>
   46407   VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const
   46408   {
   46409     d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( pFeatures ) );
   46410   }
   46411 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46412   template<typename Dispatch>
   46413   VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const
   46414   {
   46415     PhysicalDeviceFeatures2 features;
   46416     d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
   46417     return features;
   46418   }
   46419   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46420   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const
   46421   {
   46422     StructureChain<X, Y, Z...> structureChain;
   46423     PhysicalDeviceFeatures2& features = structureChain.template get<PhysicalDeviceFeatures2>();
   46424     d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
   46425     return structureChain;
   46426   }
   46427 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46428 
   46429   template<typename Dispatch>
   46430   VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( PhysicalDeviceProperties2* pProperties, Dispatch const &d) const
   46431   {
   46432     d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( pProperties ) );
   46433   }
   46434 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46435   template<typename Dispatch>
   46436   VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2(Dispatch const &d ) const
   46437   {
   46438     PhysicalDeviceProperties2 properties;
   46439     d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
   46440     return properties;
   46441   }
   46442   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46443   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getProperties2(Dispatch const &d ) const
   46444   {
   46445     StructureChain<X, Y, Z...> structureChain;
   46446     PhysicalDeviceProperties2& properties = structureChain.template get<PhysicalDeviceProperties2>();
   46447     d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
   46448     return structureChain;
   46449   }
   46450 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46451 
   46452   template<typename Dispatch>
   46453   VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2* pProperties, Dispatch const &d) const
   46454   {
   46455     d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( pProperties ) );
   46456   }
   46457 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46458   template<typename Dispatch>
   46459   VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR(Dispatch const &d ) const
   46460   {
   46461     PhysicalDeviceProperties2 properties;
   46462     d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
   46463     return properties;
   46464   }
   46465   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46466   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getProperties2KHR(Dispatch const &d ) const
   46467   {
   46468     StructureChain<X, Y, Z...> structureChain;
   46469     PhysicalDeviceProperties2& properties = structureChain.template get<PhysicalDeviceProperties2>();
   46470     d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
   46471     return structureChain;
   46472   }
   46473 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46474 
   46475   template<typename Dispatch>
   46476   VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( Format format, FormatProperties2* pFormatProperties, Dispatch const &d) const
   46477   {
   46478     d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( pFormatProperties ) );
   46479   }
   46480 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46481   template<typename Dispatch>
   46482   VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2( Format format, Dispatch const &d ) const
   46483   {
   46484     FormatProperties2 formatProperties;
   46485     d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
   46486     return formatProperties;
   46487   }
   46488   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46489   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFormatProperties2( Format format, Dispatch const &d ) const
   46490   {
   46491     StructureChain<X, Y, Z...> structureChain;
   46492     FormatProperties2& formatProperties = structureChain.template get<FormatProperties2>();
   46493     d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
   46494     return structureChain;
   46495   }
   46496 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46497 
   46498   template<typename Dispatch>
   46499   VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2* pFormatProperties, Dispatch const &d) const
   46500   {
   46501     d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( pFormatProperties ) );
   46502   }
   46503 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46504   template<typename Dispatch>
   46505   VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2KHR( Format format, Dispatch const &d ) const
   46506   {
   46507     FormatProperties2 formatProperties;
   46508     d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
   46509     return formatProperties;
   46510   }
   46511   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46512   VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFormatProperties2KHR( Format format, Dispatch const &d ) const
   46513   {
   46514     StructureChain<X, Y, Z...> structureChain;
   46515     FormatProperties2& formatProperties = structureChain.template get<FormatProperties2>();
   46516     d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
   46517     return structureChain;
   46518   }
   46519 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46520 
   46521   template<typename Dispatch>
   46522   VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const
   46523   {
   46524     return static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( pImageFormatProperties ) ) );
   46525   }
   46526 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46527   template<typename Dispatch>
   46528   VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
   46529   {
   46530     ImageFormatProperties2 imageFormatProperties;
   46531     Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
   46532     return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" );
   46533   }
   46534   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46535   VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
   46536   {
   46537     StructureChain<X, Y, Z...> structureChain;
   46538     ImageFormatProperties2& imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
   46539     Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
   46540     return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" );
   46541   }
   46542 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46543 
   46544   template<typename Dispatch>
   46545   VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const
   46546   {
   46547     return static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( pImageFormatProperties ) ) );
   46548   }
   46549 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46550   template<typename Dispatch>
   46551   VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
   46552   {
   46553     ImageFormatProperties2 imageFormatProperties;
   46554     Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
   46555     return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" );
   46556   }
   46557   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46558   VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
   46559   {
   46560     StructureChain<X, Y, Z...> structureChain;
   46561     ImageFormatProperties2& imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
   46562     Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
   46563     return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" );
   46564   }
   46565 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46566 
   46567   template<typename Dispatch>
   46568   VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const
   46569   {
   46570     d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( pQueueFamilyProperties ) );
   46571   }
   46572 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46573   template <typename Allocator, typename Dispatch>
   46574   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2(Dispatch const &d ) const
   46575   {
   46576     std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties;
   46577     uint32_t queueFamilyPropertyCount;
   46578     d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   46579     queueFamilyProperties.resize( queueFamilyPropertyCount );
   46580     d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
   46581     return queueFamilyProperties;
   46582   }
   46583   template <typename Allocator, typename Dispatch>
   46584   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const
   46585   {
   46586     std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties( vectorAllocator );
   46587     uint32_t queueFamilyPropertyCount;
   46588     d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   46589     queueFamilyProperties.resize( queueFamilyPropertyCount );
   46590     d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
   46591     return queueFamilyProperties;
   46592   }
   46593 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46594 
   46595   template<typename Dispatch>
   46596   VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const
   46597   {
   46598     d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( pQueueFamilyProperties ) );
   46599   }
   46600 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46601   template <typename Allocator, typename Dispatch>
   46602   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR(Dispatch const &d ) const
   46603   {
   46604     std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties;
   46605     uint32_t queueFamilyPropertyCount;
   46606     d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   46607     queueFamilyProperties.resize( queueFamilyPropertyCount );
   46608     d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
   46609     return queueFamilyProperties;
   46610   }
   46611   template <typename Allocator, typename Dispatch>
   46612   VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   46613   {
   46614     std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties( vectorAllocator );
   46615     uint32_t queueFamilyPropertyCount;
   46616     d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
   46617     queueFamilyProperties.resize( queueFamilyPropertyCount );
   46618     d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
   46619     return queueFamilyProperties;
   46620   }
   46621 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46622 
   46623   template<typename Dispatch>
   46624   VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const
   46625   {
   46626     d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( pMemoryProperties ) );
   46627   }
   46628 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46629   template<typename Dispatch>
   46630   VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2(Dispatch const &d ) const
   46631   {
   46632     PhysicalDeviceMemoryProperties2 memoryProperties;
   46633     d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( &memoryProperties ) );
   46634     return memoryProperties;
   46635   }
   46636 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46637 
   46638   template<typename Dispatch>
   46639   VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const
   46640   {
   46641     d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( pMemoryProperties ) );
   46642   }
   46643 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46644   template<typename Dispatch>
   46645   VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR(Dispatch const &d ) const
   46646   {
   46647     PhysicalDeviceMemoryProperties2 memoryProperties;
   46648     d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( &memoryProperties ) );
   46649     return memoryProperties;
   46650   }
   46651 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46652 
   46653   template<typename Dispatch>
   46654   VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d) const
   46655   {
   46656     d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( pProperties ) );
   46657   }
   46658 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46659   template <typename Allocator, typename Dispatch>
   46660   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const
   46661   {
   46662     std::vector<SparseImageFormatProperties2,Allocator> properties;
   46663     uint32_t propertyCount;
   46664     d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
   46665     properties.resize( propertyCount );
   46666     d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
   46667     return properties;
   46668   }
   46669   template <typename Allocator, typename Dispatch>
   46670   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   46671   {
   46672     std::vector<SparseImageFormatProperties2,Allocator> properties( vectorAllocator );
   46673     uint32_t propertyCount;
   46674     d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
   46675     properties.resize( propertyCount );
   46676     d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
   46677     return properties;
   46678   }
   46679 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46680 
   46681   template<typename Dispatch>
   46682   VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d) const
   46683   {
   46684     d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( pProperties ) );
   46685   }
   46686 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46687   template <typename Allocator, typename Dispatch>
   46688   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const
   46689   {
   46690     std::vector<SparseImageFormatProperties2,Allocator> properties;
   46691     uint32_t propertyCount;
   46692     d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
   46693     properties.resize( propertyCount );
   46694     d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
   46695     return properties;
   46696   }
   46697   template <typename Allocator, typename Dispatch>
   46698   VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   46699   {
   46700     std::vector<SparseImageFormatProperties2,Allocator> properties( vectorAllocator );
   46701     uint32_t propertyCount;
   46702     d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
   46703     properties.resize( propertyCount );
   46704     d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
   46705     return properties;
   46706   }
   46707 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46708 
   46709   template<typename Dispatch>
   46710   VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const
   46711   {
   46712     d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( pExternalBufferProperties ) );
   46713   }
   46714 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46715   template<typename Dispatch>
   46716   VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const
   46717   {
   46718     ExternalBufferProperties externalBufferProperties;
   46719     d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( &externalBufferProperties ) );
   46720     return externalBufferProperties;
   46721   }
   46722 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46723 
   46724   template<typename Dispatch>
   46725   VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const
   46726   {
   46727     d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( pExternalBufferProperties ) );
   46728   }
   46729 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46730   template<typename Dispatch>
   46731   VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const
   46732   {
   46733     ExternalBufferProperties externalBufferProperties;
   46734     d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( &externalBufferProperties ) );
   46735     return externalBufferProperties;
   46736   }
   46737 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46738 
   46739   template<typename Dispatch>
   46740   VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const
   46741   {
   46742     d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( pExternalSemaphoreProperties ) );
   46743   }
   46744 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46745   template<typename Dispatch>
   46746   VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const
   46747   {
   46748     ExternalSemaphoreProperties externalSemaphoreProperties;
   46749     d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( &externalSemaphoreProperties ) );
   46750     return externalSemaphoreProperties;
   46751   }
   46752 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46753 
   46754   template<typename Dispatch>
   46755   VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const
   46756   {
   46757     d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( pExternalSemaphoreProperties ) );
   46758   }
   46759 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46760   template<typename Dispatch>
   46761   VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const
   46762   {
   46763     ExternalSemaphoreProperties externalSemaphoreProperties;
   46764     d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( &externalSemaphoreProperties ) );
   46765     return externalSemaphoreProperties;
   46766   }
   46767 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46768 
   46769   template<typename Dispatch>
   46770   VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const
   46771   {
   46772     d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( pExternalFenceProperties ) );
   46773   }
   46774 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46775   template<typename Dispatch>
   46776   VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const
   46777   {
   46778     ExternalFenceProperties externalFenceProperties;
   46779     d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( &externalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( &externalFenceProperties ) );
   46780     return externalFenceProperties;
   46781   }
   46782 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46783 
   46784   template<typename Dispatch>
   46785   VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const
   46786   {
   46787     d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( pExternalFenceProperties ) );
   46788   }
   46789 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46790   template<typename Dispatch>
   46791   VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const
   46792   {
   46793     ExternalFenceProperties externalFenceProperties;
   46794     d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( &externalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( &externalFenceProperties ) );
   46795     return externalFenceProperties;
   46796   }
   46797 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46798 
   46799 #ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46800   template<typename Dispatch>
   46801   VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display, Dispatch const &d) const
   46802   {
   46803     return static_cast<Result>( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
   46804   }
   46805 #else
   46806   template<typename Dispatch>
   46807   VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display, Dispatch const &d ) const
   46808   {
   46809     Result result = static_cast<Result>( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
   46810     return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::releaseDisplayEXT" );
   46811   }
   46812 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46813 
   46814 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   46815   template<typename Dispatch>
   46816   VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display, Dispatch const &d) const
   46817   {
   46818     return static_cast<Result>( d.vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
   46819   }
   46820 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46821   template<typename Dispatch>
   46822   VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display, Dispatch const &d ) const
   46823   {
   46824     Display dpy;
   46825     Result result = static_cast<Result>( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
   46826     return createResultValue( result, dpy, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::acquireXlibDisplayEXT" );
   46827   }
   46828 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46829 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   46830 
   46831 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   46832   template<typename Dispatch>
   46833   VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay, Dispatch const &d) const
   46834   {
   46835     return static_cast<Result>( d.vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
   46836   }
   46837 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46838   template<typename Dispatch>
   46839   VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d ) const
   46840   {
   46841     DisplayKHR display;
   46842     Result result = static_cast<Result>( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
   46843     return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getRandROutputDisplayEXT" );
   46844   }
   46845 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46846 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   46847 
   46848   template<typename Dispatch>
   46849   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d) const
   46850   {
   46851     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
   46852   }
   46853 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46854   template<typename Dispatch>
   46855   VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, Dispatch const &d ) const
   46856   {
   46857     SurfaceCapabilities2EXT surfaceCapabilities;
   46858     Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
   46859     return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2EXT" );
   46860   }
   46861 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46862 
   46863   template<typename Dispatch>
   46864   VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHR( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects, Dispatch const &d) const
   46865   {
   46866     return static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
   46867   }
   46868 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46869   template <typename Allocator, typename Dispatch>
   46870   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHR( SurfaceKHR surface, Dispatch const &d ) const
   46871   {
   46872     std::vector<Rect2D,Allocator> rects;
   46873     uint32_t rectCount;
   46874     Result result;
   46875     do
   46876     {
   46877       result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
   46878       if ( ( result == Result::eSuccess ) && rectCount )
   46879       {
   46880         rects.resize( rectCount );
   46881         result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
   46882       }
   46883     } while ( result == Result::eIncomplete );
   46884     if ( result == Result::eSuccess )
   46885     {
   46886       VULKAN_HPP_ASSERT( rectCount <= rects.size() );
   46887       rects.resize( rectCount );
   46888     }
   46889     return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" );
   46890   }
   46891   template <typename Allocator, typename Dispatch>
   46892   VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHR( SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const
   46893   {
   46894     std::vector<Rect2D,Allocator> rects( vectorAllocator );
   46895     uint32_t rectCount;
   46896     Result result;
   46897     do
   46898     {
   46899       result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
   46900       if ( ( result == Result::eSuccess ) && rectCount )
   46901       {
   46902         rects.resize( rectCount );
   46903         result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
   46904       }
   46905     } while ( result == Result::eIncomplete );
   46906     if ( result == Result::eSuccess )
   46907     {
   46908       VULKAN_HPP_ASSERT( rectCount <= rects.size() );
   46909       rects.resize( rectCount );
   46910     }
   46911     return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" );
   46912   }
   46913 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46914 
   46915   template<typename Dispatch>
   46916   VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d) const
   46917   {
   46918     d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
   46919   }
   46920 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46921   template<typename Dispatch>
   46922   VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const &d ) const
   46923   {
   46924     MultisamplePropertiesEXT multisampleProperties;
   46925     d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
   46926     return multisampleProperties;
   46927   }
   46928 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46929 
   46930   template<typename Dispatch>
   46931   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d) const
   46932   {
   46933     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
   46934   }
   46935 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46936   template<typename Dispatch>
   46937   VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
   46938   {
   46939     SurfaceCapabilities2KHR surfaceCapabilities;
   46940     Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
   46941     return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" );
   46942   }
   46943   template <typename X, typename Y, typename ...Z, typename Dispatch>
   46944   VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
   46945   {
   46946     StructureChain<X, Y, Z...> structureChain;
   46947     SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
   46948     Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
   46949     return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" );
   46950   }
   46951 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   46952 
   46953   template<typename Dispatch>
   46954   VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d) const
   46955   {
   46956     return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
   46957   }
   46958 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   46959   template <typename Allocator, typename Dispatch>
   46960   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
   46961   {
   46962     std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
   46963     uint32_t surfaceFormatCount;
   46964     Result result;
   46965     do
   46966     {
   46967       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
   46968       if ( ( result == Result::eSuccess ) && surfaceFormatCount )
   46969       {
   46970         surfaceFormats.resize( surfaceFormatCount );
   46971         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
   46972       }
   46973     } while ( result == Result::eIncomplete );
   46974     if ( result == Result::eSuccess )
   46975     {
   46976       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
   46977       surfaceFormats.resize( surfaceFormatCount );
   46978     }
   46979     return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" );
   46980   }
   46981   template <typename Allocator, typename Dispatch>
   46982   VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const
   46983   {
   46984     std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats( vectorAllocator );
   46985     uint32_t surfaceFormatCount;
   46986     Result result;
   46987     do
   46988     {
   46989       result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
   46990       if ( ( result == Result::eSuccess ) && surfaceFormatCount )
   46991       {
   46992         surfaceFormats.resize( surfaceFormatCount );
   46993         result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
   46994       }
   46995     } while ( result == Result::eIncomplete );
   46996     if ( result == Result::eSuccess )
   46997     {
   46998       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
   46999       surfaceFormats.resize( surfaceFormatCount );
   47000     }
   47001     return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" );
   47002   }
   47003 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47004 
   47005   template<typename Dispatch>
   47006   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayProperties2KHR( uint32_t* pPropertyCount, DisplayProperties2KHR* pProperties, Dispatch const &d) const
   47007   {
   47008     return static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayProperties2KHR*>( pProperties ) ) );
   47009   }
   47010 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47011   template <typename Allocator, typename Dispatch>
   47012   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayProperties2KHR(Dispatch const &d ) const
   47013   {
   47014     std::vector<DisplayProperties2KHR,Allocator> properties;
   47015     uint32_t propertyCount;
   47016     Result result;
   47017     do
   47018     {
   47019       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
   47020       if ( ( result == Result::eSuccess ) && propertyCount )
   47021       {
   47022         properties.resize( propertyCount );
   47023         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayProperties2KHR*>( properties.data() ) ) );
   47024       }
   47025     } while ( result == Result::eIncomplete );
   47026     if ( result == Result::eSuccess )
   47027     {
   47028       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47029       properties.resize( propertyCount );
   47030     }
   47031     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" );
   47032   }
   47033   template <typename Allocator, typename Dispatch>
   47034   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   47035   {
   47036     std::vector<DisplayProperties2KHR,Allocator> properties( vectorAllocator );
   47037     uint32_t propertyCount;
   47038     Result result;
   47039     do
   47040     {
   47041       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
   47042       if ( ( result == Result::eSuccess ) && propertyCount )
   47043       {
   47044         properties.resize( propertyCount );
   47045         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayProperties2KHR*>( properties.data() ) ) );
   47046       }
   47047     } while ( result == Result::eIncomplete );
   47048     if ( result == Result::eSuccess )
   47049     {
   47050       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47051       properties.resize( propertyCount );
   47052     }
   47053     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" );
   47054   }
   47055 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47056 
   47057   template<typename Dispatch>
   47058   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, DisplayPlaneProperties2KHR* pProperties, Dispatch const &d) const
   47059   {
   47060     return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR*>( pProperties ) ) );
   47061   }
   47062 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47063   template <typename Allocator, typename Dispatch>
   47064   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayPlaneProperties2KHR(Dispatch const &d ) const
   47065   {
   47066     std::vector<DisplayPlaneProperties2KHR,Allocator> properties;
   47067     uint32_t propertyCount;
   47068     Result result;
   47069     do
   47070     {
   47071       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
   47072       if ( ( result == Result::eSuccess ) && propertyCount )
   47073       {
   47074         properties.resize( propertyCount );
   47075         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR*>( properties.data() ) ) );
   47076       }
   47077     } while ( result == Result::eIncomplete );
   47078     if ( result == Result::eSuccess )
   47079     {
   47080       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47081       properties.resize( propertyCount );
   47082     }
   47083     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" );
   47084   }
   47085   template <typename Allocator, typename Dispatch>
   47086   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayPlaneProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   47087   {
   47088     std::vector<DisplayPlaneProperties2KHR,Allocator> properties( vectorAllocator );
   47089     uint32_t propertyCount;
   47090     Result result;
   47091     do
   47092     {
   47093       result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
   47094       if ( ( result == Result::eSuccess ) && propertyCount )
   47095       {
   47096         properties.resize( propertyCount );
   47097         result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR*>( properties.data() ) ) );
   47098       }
   47099     } while ( result == Result::eIncomplete );
   47100     if ( result == Result::eSuccess )
   47101     {
   47102       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47103       properties.resize( propertyCount );
   47104     }
   47105     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" );
   47106   }
   47107 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47108 
   47109   template<typename Dispatch>
   47110   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModeProperties2KHR* pProperties, Dispatch const &d) const
   47111   {
   47112     return static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModeProperties2KHR*>( pProperties ) ) );
   47113   }
   47114 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47115   template <typename Allocator, typename Dispatch>
   47116   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const &d ) const
   47117   {
   47118     std::vector<DisplayModeProperties2KHR,Allocator> properties;
   47119     uint32_t propertyCount;
   47120     Result result;
   47121     do
   47122     {
   47123       result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
   47124       if ( ( result == Result::eSuccess ) && propertyCount )
   47125       {
   47126         properties.resize( propertyCount );
   47127         result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModeProperties2KHR*>( properties.data() ) ) );
   47128       }
   47129     } while ( result == Result::eIncomplete );
   47130     if ( result == Result::eSuccess )
   47131     {
   47132       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47133       properties.resize( propertyCount );
   47134     }
   47135     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" );
   47136   }
   47137   template <typename Allocator, typename Dispatch>
   47138   VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const
   47139   {
   47140     std::vector<DisplayModeProperties2KHR,Allocator> properties( vectorAllocator );
   47141     uint32_t propertyCount;
   47142     Result result;
   47143     do
   47144     {
   47145       result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
   47146       if ( ( result == Result::eSuccess ) && propertyCount )
   47147       {
   47148         properties.resize( propertyCount );
   47149         result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModeProperties2KHR*>( properties.data() ) ) );
   47150       }
   47151     } while ( result == Result::eIncomplete );
   47152     if ( result == Result::eSuccess )
   47153     {
   47154       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
   47155       properties.resize( propertyCount );
   47156     }
   47157     return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" );
   47158   }
   47159 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47160 
   47161   template<typename Dispatch>
   47162   VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR* pDisplayPlaneInfo, DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d) const
   47163   {
   47164     return static_cast<Result>( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkDisplayPlaneInfo2KHR*>( pDisplayPlaneInfo ), reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>( pCapabilities ) ) );
   47165   }
   47166 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47167   template<typename Dispatch>
   47168   VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilities2KHR>::type PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d ) const
   47169   {
   47170     DisplayPlaneCapabilities2KHR capabilities;
   47171     Result result = static_cast<Result>( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkDisplayPlaneInfo2KHR*>( &displayPlaneInfo ), reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>( &capabilities ) ) );
   47172     return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
   47173   }
   47174 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47175 
   47176   template<typename Dispatch>
   47177   VULKAN_HPP_INLINE Result PhysicalDevice::getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, TimeDomainEXT* pTimeDomains, Dispatch const &d) const
   47178   {
   47179     return static_cast<Result>( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, pTimeDomainCount, reinterpret_cast<VkTimeDomainEXT*>( pTimeDomains ) ) );
   47180   }
   47181 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47182   template <typename Allocator, typename Dispatch>
   47183   VULKAN_HPP_INLINE typename ResultValueType<std::vector<TimeDomainEXT,Allocator>>::type PhysicalDevice::getCalibrateableTimeDomainsEXT(Dispatch const &d ) const
   47184   {
   47185     std::vector<TimeDomainEXT,Allocator> timeDomains;
   47186     uint32_t timeDomainCount;
   47187     Result result;
   47188     do
   47189     {
   47190       result = static_cast<Result>( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) );
   47191       if ( ( result == Result::eSuccess ) && timeDomainCount )
   47192       {
   47193         timeDomains.resize( timeDomainCount );
   47194         result = static_cast<Result>( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast<VkTimeDomainEXT*>( timeDomains.data() ) ) );
   47195       }
   47196     } while ( result == Result::eIncomplete );
   47197     if ( result == Result::eSuccess )
   47198     {
   47199       VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
   47200       timeDomains.resize( timeDomainCount );
   47201     }
   47202     return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
   47203   }
   47204   template <typename Allocator, typename Dispatch>
   47205   VULKAN_HPP_INLINE typename ResultValueType<std::vector<TimeDomainEXT,Allocator>>::type PhysicalDevice::getCalibrateableTimeDomainsEXT(Allocator const& vectorAllocator, Dispatch const &d ) const
   47206   {
   47207     std::vector<TimeDomainEXT,Allocator> timeDomains( vectorAllocator );
   47208     uint32_t timeDomainCount;
   47209     Result result;
   47210     do
   47211     {
   47212       result = static_cast<Result>( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) );
   47213       if ( ( result == Result::eSuccess ) && timeDomainCount )
   47214       {
   47215         timeDomains.resize( timeDomainCount );
   47216         result = static_cast<Result>( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast<VkTimeDomainEXT*>( timeDomains.data() ) ) );
   47217       }
   47218     } while ( result == Result::eIncomplete );
   47219     if ( result == Result::eSuccess )
   47220     {
   47221       VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
   47222       timeDomains.resize( timeDomainCount );
   47223     }
   47224     return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
   47225   }
   47226 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47227 
   47228   struct CmdProcessCommandsInfoNVX
   47229   {
   47230     CmdProcessCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(),
   47231                                IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(),
   47232                                uint32_t indirectCommandsTokenCount_ = 0,
   47233                                const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr,
   47234                                uint32_t maxSequencesCount_ = 0,
   47235                                CommandBuffer targetCommandBuffer_ = CommandBuffer(),
   47236                                Buffer sequencesCountBuffer_ = Buffer(),
   47237                                DeviceSize sequencesCountOffset_ = 0,
   47238                                Buffer sequencesIndexBuffer_ = Buffer(),
   47239                                DeviceSize sequencesIndexOffset_ = 0 )
   47240       : objectTable( objectTable_ )
   47241       , indirectCommandsLayout( indirectCommandsLayout_ )
   47242       , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
   47243       , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
   47244       , maxSequencesCount( maxSequencesCount_ )
   47245       , targetCommandBuffer( targetCommandBuffer_ )
   47246       , sequencesCountBuffer( sequencesCountBuffer_ )
   47247       , sequencesCountOffset( sequencesCountOffset_ )
   47248       , sequencesIndexBuffer( sequencesIndexBuffer_ )
   47249       , sequencesIndexOffset( sequencesIndexOffset_ )
   47250     {
   47251     }
   47252 
   47253     CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
   47254     {
   47255       memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
   47256     }
   47257 
   47258     CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
   47259     {
   47260       memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
   47261       return *this;
   47262     }
   47263     CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
   47264     {
   47265       pNext = pNext_;
   47266       return *this;
   47267     }
   47268 
   47269     CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
   47270     {
   47271       objectTable = objectTable_;
   47272       return *this;
   47273     }
   47274 
   47275     CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
   47276     {
   47277       indirectCommandsLayout = indirectCommandsLayout_;
   47278       return *this;
   47279     }
   47280 
   47281     CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
   47282     {
   47283       indirectCommandsTokenCount = indirectCommandsTokenCount_;
   47284       return *this;
   47285     }
   47286 
   47287     CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
   47288     {
   47289       pIndirectCommandsTokens = pIndirectCommandsTokens_;
   47290       return *this;
   47291     }
   47292 
   47293     CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
   47294     {
   47295       maxSequencesCount = maxSequencesCount_;
   47296       return *this;
   47297     }
   47298 
   47299     CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
   47300     {
   47301       targetCommandBuffer = targetCommandBuffer_;
   47302       return *this;
   47303     }
   47304 
   47305     CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
   47306     {
   47307       sequencesCountBuffer = sequencesCountBuffer_;
   47308       return *this;
   47309     }
   47310 
   47311     CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
   47312     {
   47313       sequencesCountOffset = sequencesCountOffset_;
   47314       return *this;
   47315     }
   47316 
   47317     CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
   47318     {
   47319       sequencesIndexBuffer = sequencesIndexBuffer_;
   47320       return *this;
   47321     }
   47322 
   47323     CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
   47324     {
   47325       sequencesIndexOffset = sequencesIndexOffset_;
   47326       return *this;
   47327     }
   47328 
   47329     operator VkCmdProcessCommandsInfoNVX const&() const
   47330     {
   47331       return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
   47332     }
   47333 
   47334     operator VkCmdProcessCommandsInfoNVX &()
   47335     {
   47336       return *reinterpret_cast<VkCmdProcessCommandsInfoNVX*>(this);
   47337     }
   47338 
   47339     bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
   47340     {
   47341       return ( sType == rhs.sType )
   47342           && ( pNext == rhs.pNext )
   47343           && ( objectTable == rhs.objectTable )
   47344           && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
   47345           && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
   47346           && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
   47347           && ( maxSequencesCount == rhs.maxSequencesCount )
   47348           && ( targetCommandBuffer == rhs.targetCommandBuffer )
   47349           && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
   47350           && ( sequencesCountOffset == rhs.sequencesCountOffset )
   47351           && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
   47352           && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
   47353     }
   47354 
   47355     bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
   47356     {
   47357       return !operator==( rhs );
   47358     }
   47359 
   47360   private:
   47361     StructureType sType = StructureType::eCmdProcessCommandsInfoNVX;
   47362 
   47363   public:
   47364     const void* pNext = nullptr;
   47365     ObjectTableNVX objectTable;
   47366     IndirectCommandsLayoutNVX indirectCommandsLayout;
   47367     uint32_t indirectCommandsTokenCount;
   47368     const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
   47369     uint32_t maxSequencesCount;
   47370     CommandBuffer targetCommandBuffer;
   47371     Buffer sequencesCountBuffer;
   47372     DeviceSize sequencesCountOffset;
   47373     Buffer sequencesIndexBuffer;
   47374     DeviceSize sequencesIndexOffset;
   47375   };
   47376   static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
   47377 
   47378   struct PhysicalDeviceGroupProperties
   47379   {
   47380     operator VkPhysicalDeviceGroupProperties const&() const
   47381     {
   47382       return *reinterpret_cast<const VkPhysicalDeviceGroupProperties*>(this);
   47383     }
   47384 
   47385     operator VkPhysicalDeviceGroupProperties &()
   47386     {
   47387       return *reinterpret_cast<VkPhysicalDeviceGroupProperties*>(this);
   47388     }
   47389 
   47390     bool operator==( PhysicalDeviceGroupProperties const& rhs ) const
   47391     {
   47392       return ( sType == rhs.sType )
   47393           && ( pNext == rhs.pNext )
   47394           && ( physicalDeviceCount == rhs.physicalDeviceCount )
   47395           && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof( PhysicalDevice ) ) == 0 )
   47396           && ( subsetAllocation == rhs.subsetAllocation );
   47397     }
   47398 
   47399     bool operator!=( PhysicalDeviceGroupProperties const& rhs ) const
   47400     {
   47401       return !operator==( rhs );
   47402     }
   47403 
   47404   private:
   47405     StructureType sType = StructureType::ePhysicalDeviceGroupProperties;
   47406 
   47407   public:
   47408     void* pNext = nullptr;
   47409     uint32_t physicalDeviceCount;
   47410     PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
   47411     Bool32 subsetAllocation;
   47412   };
   47413   static_assert( sizeof( PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), "struct and wrapper have different size!" );
   47414 
   47415   using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
   47416 
   47417 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47418   class Instance;
   47419 
   47420   template <typename Dispatch> class UniqueHandleTraits<DebugReportCallbackEXT,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
   47421   using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT,DispatchLoaderStatic>;
   47422   template <typename Dispatch> class UniqueHandleTraits<DebugUtilsMessengerEXT,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
   47423   using UniqueDebugUtilsMessengerEXT = UniqueHandle<DebugUtilsMessengerEXT,DispatchLoaderStatic>;
   47424   template <typename Dispatch> class UniqueHandleTraits<SurfaceKHR,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
   47425   using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR,DispatchLoaderStatic>;
   47426 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47427 
   47428   class Instance
   47429   {
   47430   public:
   47431     VULKAN_HPP_CONSTEXPR Instance()
   47432       : m_instance(VK_NULL_HANDLE)
   47433     {}
   47434 
   47435     VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t )
   47436       : m_instance(VK_NULL_HANDLE)
   47437     {}
   47438 
   47439     VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
   47440       : m_instance( instance )
   47441     {}
   47442 
   47443 #if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
   47444     Instance & operator=(VkInstance instance)
   47445     {
   47446       m_instance = instance;
   47447       return *this;
   47448     }
   47449 #endif
   47450 
   47451     Instance & operator=( std::nullptr_t )
   47452     {
   47453       m_instance = VK_NULL_HANDLE;
   47454       return *this;
   47455     }
   47456 
   47457     bool operator==( Instance const & rhs ) const
   47458     {
   47459       return m_instance == rhs.m_instance;
   47460     }
   47461 
   47462     bool operator!=(Instance const & rhs ) const
   47463     {
   47464       return m_instance != rhs.m_instance;
   47465     }
   47466 
   47467     bool operator<(Instance const & rhs ) const
   47468     {
   47469       return m_instance < rhs.m_instance;
   47470     }
   47471 
   47472     template<typename Dispatch = DispatchLoaderStatic>
   47473     void destroy( const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47474 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47475     template<typename Dispatch = DispatchLoaderStatic>
   47476     void destroy( Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47477 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47478 
   47479     template<typename Dispatch = DispatchLoaderStatic>
   47480     Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices, Dispatch const &d = Dispatch() ) const;
   47481 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47482     template <typename Allocator = std::allocator<PhysicalDevice>, typename Dispatch = DispatchLoaderStatic>
   47483     typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices(Dispatch const &d = Dispatch() ) const;
   47484     template <typename Allocator = std::allocator<PhysicalDevice>, typename Dispatch = DispatchLoaderStatic>
   47485     typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices(Allocator const& vectorAllocator, Dispatch const &d ) const;
   47486 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47487 
   47488     template<typename Dispatch = DispatchLoaderStatic>
   47489     PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const;
   47490 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47491     template<typename Dispatch = DispatchLoaderStatic>
   47492     PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const;
   47493 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47494 
   47495 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   47496     template<typename Dispatch = DispatchLoaderStatic>
   47497     Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47498 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47499     template<typename Dispatch = DispatchLoaderStatic>
   47500     ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47501 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47502     template<typename Dispatch = DispatchLoaderStatic>
   47503     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47504 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47505 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47506 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   47507 
   47508     template<typename Dispatch = DispatchLoaderStatic>
   47509     Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47510 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47511     template<typename Dispatch = DispatchLoaderStatic>
   47512     ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47513 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47514     template<typename Dispatch = DispatchLoaderStatic>
   47515     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47516 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47517 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47518 
   47519     template<typename Dispatch = DispatchLoaderStatic>
   47520     void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47521 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47522     template<typename Dispatch = DispatchLoaderStatic>
   47523     void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47524 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47525 
   47526     template<typename Dispatch = DispatchLoaderStatic>
   47527     void destroy( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47528 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47529     template<typename Dispatch = DispatchLoaderStatic>
   47530     void destroy( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47531 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47532 
   47533 #ifdef VK_USE_PLATFORM_VI_NN
   47534     template<typename Dispatch = DispatchLoaderStatic>
   47535     Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47536 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47537     template<typename Dispatch = DispatchLoaderStatic>
   47538     ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47539 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47540     template<typename Dispatch = DispatchLoaderStatic>
   47541     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47542 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47543 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47544 #endif /*VK_USE_PLATFORM_VI_NN*/
   47545 
   47546 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   47547     template<typename Dispatch = DispatchLoaderStatic>
   47548     Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47549 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47550     template<typename Dispatch = DispatchLoaderStatic>
   47551     ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47552 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47553     template<typename Dispatch = DispatchLoaderStatic>
   47554     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47555 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47556 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47557 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   47558 
   47559 #ifdef VK_USE_PLATFORM_WIN32_KHR
   47560     template<typename Dispatch = DispatchLoaderStatic>
   47561     Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47562 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47563     template<typename Dispatch = DispatchLoaderStatic>
   47564     ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47565 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47566     template<typename Dispatch = DispatchLoaderStatic>
   47567     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47568 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47569 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47570 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   47571 
   47572 #ifdef VK_USE_PLATFORM_XLIB_KHR
   47573     template<typename Dispatch = DispatchLoaderStatic>
   47574     Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47575 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47576     template<typename Dispatch = DispatchLoaderStatic>
   47577     ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47578 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47579     template<typename Dispatch = DispatchLoaderStatic>
   47580     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47581 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47582 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47583 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   47584 
   47585 #ifdef VK_USE_PLATFORM_XCB_KHR
   47586     template<typename Dispatch = DispatchLoaderStatic>
   47587     Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47588 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47589     template<typename Dispatch = DispatchLoaderStatic>
   47590     ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47591 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47592     template<typename Dispatch = DispatchLoaderStatic>
   47593     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47594 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47595 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47596 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   47597 
   47598 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   47599     template<typename Dispatch = DispatchLoaderStatic>
   47600     Result createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47601 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47602     template<typename Dispatch = DispatchLoaderStatic>
   47603     ResultValueType<SurfaceKHR>::type createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47604 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47605     template<typename Dispatch = DispatchLoaderStatic>
   47606     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47607 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47608 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47609 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   47610 
   47611     template<typename Dispatch = DispatchLoaderStatic>
   47612     Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback, Dispatch const &d = Dispatch() ) const;
   47613 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47614     template<typename Dispatch = DispatchLoaderStatic>
   47615     ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47616 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47617     template<typename Dispatch = DispatchLoaderStatic>
   47618     typename ResultValueType<UniqueHandle<DebugReportCallbackEXT,Dispatch>>::type createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47619 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47620 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47621 
   47622     template<typename Dispatch = DispatchLoaderStatic>
   47623     void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47624 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47625     template<typename Dispatch = DispatchLoaderStatic>
   47626     void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47627 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47628 
   47629     template<typename Dispatch = DispatchLoaderStatic>
   47630     void destroy( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47631 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47632     template<typename Dispatch = DispatchLoaderStatic>
   47633     void destroy( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47634 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47635 
   47636     template<typename Dispatch = DispatchLoaderStatic>
   47637     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;
   47638 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47639     template<typename Dispatch = DispatchLoaderStatic>
   47640     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;
   47641 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47642 
   47643     template<typename Dispatch = DispatchLoaderStatic>
   47644     Result enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const;
   47645 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47646     template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
   47647     typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroups(Dispatch const &d = Dispatch() ) const;
   47648     template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
   47649     typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroups(Allocator const& vectorAllocator, Dispatch const &d ) const;
   47650 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47651 
   47652     template<typename Dispatch = DispatchLoaderStatic>
   47653     Result enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const;
   47654 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47655     template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
   47656     typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroupsKHR(Dispatch const &d = Dispatch() ) const;
   47657     template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
   47658     typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroupsKHR(Allocator const& vectorAllocator, Dispatch const &d ) const;
   47659 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47660 
   47661 #ifdef VK_USE_PLATFORM_IOS_MVK
   47662     template<typename Dispatch = DispatchLoaderStatic>
   47663     Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47664 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47665     template<typename Dispatch = DispatchLoaderStatic>
   47666     ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47667 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47668     template<typename Dispatch = DispatchLoaderStatic>
   47669     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47670 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47671 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47672 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   47673 
   47674 #ifdef VK_USE_PLATFORM_MACOS_MVK
   47675     template<typename Dispatch = DispatchLoaderStatic>
   47676     Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
   47677 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47678     template<typename Dispatch = DispatchLoaderStatic>
   47679     ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47680 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47681     template<typename Dispatch = DispatchLoaderStatic>
   47682     typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47683 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47684 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47685 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   47686 
   47687     template<typename Dispatch = DispatchLoaderStatic>
   47688     Result createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugUtilsMessengerEXT* pMessenger, Dispatch const &d = Dispatch() ) const;
   47689 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47690     template<typename Dispatch = DispatchLoaderStatic>
   47691     ResultValueType<DebugUtilsMessengerEXT>::type createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47692 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47693     template<typename Dispatch = DispatchLoaderStatic>
   47694     typename ResultValueType<UniqueHandle<DebugUtilsMessengerEXT,Dispatch>>::type createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47695 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47696 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47697 
   47698     template<typename Dispatch = DispatchLoaderStatic>
   47699     void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47700 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47701     template<typename Dispatch = DispatchLoaderStatic>
   47702     void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47703 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47704 
   47705     template<typename Dispatch = DispatchLoaderStatic>
   47706     void destroy( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
   47707 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47708     template<typename Dispatch = DispatchLoaderStatic>
   47709     void destroy( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
   47710 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47711 
   47712     template<typename Dispatch = DispatchLoaderStatic>
   47713     void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d = Dispatch() ) const;
   47714 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47715     template<typename Dispatch = DispatchLoaderStatic>
   47716     void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d = Dispatch() ) const;
   47717 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47718 
   47719 
   47720 
   47721     VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
   47722     {
   47723       return m_instance;
   47724     }
   47725 
   47726     explicit operator bool() const
   47727     {
   47728       return m_instance != VK_NULL_HANDLE;
   47729     }
   47730 
   47731     bool operator!() const
   47732     {
   47733       return m_instance == VK_NULL_HANDLE;
   47734     }
   47735 
   47736   private:
   47737     VkInstance m_instance;
   47738   };
   47739 
   47740   static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
   47741 
   47742   template<typename Dispatch>
   47743   VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator, Dispatch const &d) const
   47744   {
   47745     d.vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   47746   }
   47747 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47748   template<typename Dispatch>
   47749   VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47750   {
   47751     d.vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   47752   }
   47753 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47754 
   47755   template<typename Dispatch>
   47756   VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices, Dispatch const &d) const
   47757   {
   47758     return static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
   47759   }
   47760 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47761   template <typename Allocator, typename Dispatch>
   47762   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices(Dispatch const &d ) const
   47763   {
   47764     std::vector<PhysicalDevice,Allocator> physicalDevices;
   47765     uint32_t physicalDeviceCount;
   47766     Result result;
   47767     do
   47768     {
   47769       result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
   47770       if ( ( result == Result::eSuccess ) && physicalDeviceCount )
   47771       {
   47772         physicalDevices.resize( physicalDeviceCount );
   47773         result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
   47774       }
   47775     } while ( result == Result::eIncomplete );
   47776     if ( result == Result::eSuccess )
   47777     {
   47778       VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() );
   47779       physicalDevices.resize( physicalDeviceCount );
   47780     }
   47781     return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" );
   47782   }
   47783   template <typename Allocator, typename Dispatch>
   47784   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices(Allocator const& vectorAllocator, Dispatch const &d ) const
   47785   {
   47786     std::vector<PhysicalDevice,Allocator> physicalDevices( vectorAllocator );
   47787     uint32_t physicalDeviceCount;
   47788     Result result;
   47789     do
   47790     {
   47791       result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
   47792       if ( ( result == Result::eSuccess ) && physicalDeviceCount )
   47793       {
   47794         physicalDevices.resize( physicalDeviceCount );
   47795         result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
   47796       }
   47797     } while ( result == Result::eIncomplete );
   47798     if ( result == Result::eSuccess )
   47799     {
   47800       VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() );
   47801       physicalDevices.resize( physicalDeviceCount );
   47802     }
   47803     return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" );
   47804   }
   47805 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47806 
   47807   template<typename Dispatch>
   47808   VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName, Dispatch const &d) const
   47809   {
   47810     return d.vkGetInstanceProcAddr( m_instance, pName );
   47811   }
   47812 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47813   template<typename Dispatch>
   47814   VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name, Dispatch const &d ) const
   47815   {
   47816     return d.vkGetInstanceProcAddr( m_instance, name.c_str() );
   47817   }
   47818 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47819 
   47820 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   47821   template<typename Dispatch>
   47822   VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47823   {
   47824     return static_cast<Result>( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47825   }
   47826 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47827   template<typename Dispatch>
   47828   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47829   {
   47830     SurfaceKHR surface;
   47831     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 ) ) );
   47832     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHR" );
   47833   }
   47834 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47835   template<typename Dispatch>
   47836   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47837   {
   47838     SurfaceKHR surface;
   47839     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 ) ) );
   47840 
   47841     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   47842     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHRUnique", deleter );
   47843   }
   47844 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47845 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47846 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   47847 
   47848   template<typename Dispatch>
   47849   VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47850   {
   47851     return static_cast<Result>( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47852   }
   47853 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47854   template<typename Dispatch>
   47855   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47856   {
   47857     SurfaceKHR surface;
   47858     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 ) ) );
   47859     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHR" );
   47860   }
   47861 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47862   template<typename Dispatch>
   47863   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47864   {
   47865     SurfaceKHR surface;
   47866     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 ) ) );
   47867 
   47868     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   47869     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHRUnique", deleter );
   47870   }
   47871 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47872 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47873 
   47874   template<typename Dispatch>
   47875   VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   47876   {
   47877     d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   47878   }
   47879 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47880   template<typename Dispatch>
   47881   VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47882   {
   47883     d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   47884   }
   47885 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47886 
   47887   template<typename Dispatch>
   47888   VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   47889   {
   47890     d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   47891   }
   47892 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47893   template<typename Dispatch>
   47894   VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47895   {
   47896     d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   47897   }
   47898 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47899 
   47900 #ifdef VK_USE_PLATFORM_VI_NN
   47901   template<typename Dispatch>
   47902   VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47903   {
   47904     return static_cast<Result>( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47905   }
   47906 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47907   template<typename Dispatch>
   47908   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47909   {
   47910     SurfaceKHR surface;
   47911     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 ) ) );
   47912     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNN" );
   47913   }
   47914 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47915   template<typename Dispatch>
   47916   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47917   {
   47918     SurfaceKHR surface;
   47919     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 ) ) );
   47920 
   47921     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   47922     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNNUnique", deleter );
   47923   }
   47924 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47925 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47926 #endif /*VK_USE_PLATFORM_VI_NN*/
   47927 
   47928 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   47929   template<typename Dispatch>
   47930   VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47931   {
   47932     return static_cast<Result>( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47933   }
   47934 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47935   template<typename Dispatch>
   47936   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47937   {
   47938     SurfaceKHR surface;
   47939     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 ) ) );
   47940     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHR" );
   47941   }
   47942 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47943   template<typename Dispatch>
   47944   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47945   {
   47946     SurfaceKHR surface;
   47947     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 ) ) );
   47948 
   47949     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   47950     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHRUnique", deleter );
   47951   }
   47952 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47953 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47954 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   47955 
   47956 #ifdef VK_USE_PLATFORM_WIN32_KHR
   47957   template<typename Dispatch>
   47958   VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47959   {
   47960     return static_cast<Result>( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47961   }
   47962 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47963   template<typename Dispatch>
   47964   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47965   {
   47966     SurfaceKHR surface;
   47967     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 ) ) );
   47968     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHR" );
   47969   }
   47970 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47971   template<typename Dispatch>
   47972   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47973   {
   47974     SurfaceKHR surface;
   47975     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 ) ) );
   47976 
   47977     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   47978     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHRUnique", deleter );
   47979   }
   47980 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   47981 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   47982 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   47983 
   47984 #ifdef VK_USE_PLATFORM_XLIB_KHR
   47985   template<typename Dispatch>
   47986   VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   47987   {
   47988     return static_cast<Result>( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   47989   }
   47990 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   47991   template<typename Dispatch>
   47992   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   47993   {
   47994     SurfaceKHR surface;
   47995     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 ) ) );
   47996     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHR" );
   47997   }
   47998 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   47999   template<typename Dispatch>
   48000   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48001   {
   48002     SurfaceKHR surface;
   48003     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 ) ) );
   48004 
   48005     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48006     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHRUnique", deleter );
   48007   }
   48008 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48009 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48010 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   48011 
   48012 #ifdef VK_USE_PLATFORM_XCB_KHR
   48013   template<typename Dispatch>
   48014   VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   48015   {
   48016     return static_cast<Result>( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   48017   }
   48018 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48019   template<typename Dispatch>
   48020   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48021   {
   48022     SurfaceKHR surface;
   48023     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 ) ) );
   48024     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHR" );
   48025   }
   48026 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48027   template<typename Dispatch>
   48028   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48029   {
   48030     SurfaceKHR surface;
   48031     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 ) ) );
   48032 
   48033     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48034     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHRUnique", deleter );
   48035   }
   48036 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48037 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48038 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   48039 
   48040 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   48041   template<typename Dispatch>
   48042   VULKAN_HPP_INLINE Result Instance::createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   48043   {
   48044     return static_cast<Result>( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   48045   }
   48046 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48047   template<typename Dispatch>
   48048   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48049   {
   48050     SurfaceKHR surface;
   48051     Result result = static_cast<Result>( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
   48052     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createImagePipeSurfaceFUCHSIA" );
   48053   }
   48054 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48055   template<typename Dispatch>
   48056   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48057   {
   48058     SurfaceKHR surface;
   48059     Result result = static_cast<Result>( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
   48060 
   48061     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48062     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createImagePipeSurfaceFUCHSIAUnique", deleter );
   48063   }
   48064 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48065 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48066 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   48067 
   48068   template<typename Dispatch>
   48069   VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback, Dispatch const &d) const
   48070   {
   48071     return static_cast<Result>( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
   48072   }
   48073 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48074   template<typename Dispatch>
   48075   VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48076   {
   48077     DebugReportCallbackEXT callback;
   48078     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 ) ) );
   48079     return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXT" );
   48080   }
   48081 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48082   template<typename Dispatch>
   48083   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DebugReportCallbackEXT,Dispatch>>::type Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48084   {
   48085     DebugReportCallbackEXT callback;
   48086     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 ) ) );
   48087 
   48088     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48089     return createResultValue<DebugReportCallbackEXT,Dispatch>( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXTUnique", deleter );
   48090   }
   48091 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48092 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48093 
   48094   template<typename Dispatch>
   48095   VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   48096   {
   48097     d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   48098   }
   48099 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48100   template<typename Dispatch>
   48101   VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48102   {
   48103     d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   48104   }
   48105 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48106 
   48107   template<typename Dispatch>
   48108   VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   48109   {
   48110     d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   48111   }
   48112 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48113   template<typename Dispatch>
   48114   VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48115   {
   48116     d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   48117   }
   48118 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48119 
   48120   template<typename Dispatch>
   48121   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
   48122   {
   48123     d.vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
   48124   }
   48125 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48126   template<typename Dispatch>
   48127   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
   48128   {
   48129 #ifdef VULKAN_HPP_NO_EXCEPTIONS
   48130     VULKAN_HPP_ASSERT( layerPrefix.size() == message.size() );
   48131 #else
   48132     if ( layerPrefix.size() != message.size() )
   48133     {
   48134       throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
   48135     }
   48136 #endif  // VULKAN_HPP_NO_EXCEPTIONS
   48137     d.vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
   48138   }
   48139 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48140 
   48141   template<typename Dispatch>
   48142   VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const
   48143   {
   48144     return static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( pPhysicalDeviceGroupProperties ) ) );
   48145   }
   48146 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48147   template <typename Allocator, typename Dispatch>
   48148   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroups(Dispatch const &d ) const
   48149   {
   48150     std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties;
   48151     uint32_t physicalDeviceGroupCount;
   48152     Result result;
   48153     do
   48154     {
   48155       result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) );
   48156       if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
   48157       {
   48158         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48159         result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
   48160       }
   48161     } while ( result == Result::eIncomplete );
   48162     if ( result == Result::eSuccess )
   48163     {
   48164       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
   48165       physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48166     }
   48167     return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" );
   48168   }
   48169   template <typename Allocator, typename Dispatch>
   48170   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroups(Allocator const& vectorAllocator, Dispatch const &d ) const
   48171   {
   48172     std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties( vectorAllocator );
   48173     uint32_t physicalDeviceGroupCount;
   48174     Result result;
   48175     do
   48176     {
   48177       result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) );
   48178       if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
   48179       {
   48180         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48181         result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
   48182       }
   48183     } while ( result == Result::eIncomplete );
   48184     if ( result == Result::eSuccess )
   48185     {
   48186       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
   48187       physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48188     }
   48189     return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" );
   48190   }
   48191 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48192 
   48193   template<typename Dispatch>
   48194   VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const
   48195   {
   48196     return static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( pPhysicalDeviceGroupProperties ) ) );
   48197   }
   48198 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48199   template <typename Allocator, typename Dispatch>
   48200   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHR(Dispatch const &d ) const
   48201   {
   48202     std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties;
   48203     uint32_t physicalDeviceGroupCount;
   48204     Result result;
   48205     do
   48206     {
   48207       result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) );
   48208       if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
   48209       {
   48210         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48211         result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
   48212       }
   48213     } while ( result == Result::eIncomplete );
   48214     if ( result == Result::eSuccess )
   48215     {
   48216       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
   48217       physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48218     }
   48219     return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" );
   48220   }
   48221   template <typename Allocator, typename Dispatch>
   48222   VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHR(Allocator const& vectorAllocator, Dispatch const &d ) const
   48223   {
   48224     std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties( vectorAllocator );
   48225     uint32_t physicalDeviceGroupCount;
   48226     Result result;
   48227     do
   48228     {
   48229       result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) );
   48230       if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
   48231       {
   48232         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48233         result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
   48234       }
   48235     } while ( result == Result::eIncomplete );
   48236     if ( result == Result::eSuccess )
   48237     {
   48238       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
   48239       physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
   48240     }
   48241     return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" );
   48242   }
   48243 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48244 
   48245 #ifdef VK_USE_PLATFORM_IOS_MVK
   48246   template<typename Dispatch>
   48247   VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   48248   {
   48249     return static_cast<Result>( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   48250   }
   48251 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48252   template<typename Dispatch>
   48253   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48254   {
   48255     SurfaceKHR surface;
   48256     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 ) ) );
   48257     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVK" );
   48258   }
   48259 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48260   template<typename Dispatch>
   48261   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48262   {
   48263     SurfaceKHR surface;
   48264     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 ) ) );
   48265 
   48266     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48267     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVKUnique", deleter );
   48268   }
   48269 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48270 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48271 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   48272 
   48273 #ifdef VK_USE_PLATFORM_MACOS_MVK
   48274   template<typename Dispatch>
   48275   VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
   48276   {
   48277     return static_cast<Result>( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
   48278   }
   48279 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48280   template<typename Dispatch>
   48281   VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48282   {
   48283     SurfaceKHR surface;
   48284     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 ) ) );
   48285     return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVK" );
   48286   }
   48287 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48288   template<typename Dispatch>
   48289   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48290   {
   48291     SurfaceKHR surface;
   48292     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 ) ) );
   48293 
   48294     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48295     return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVKUnique", deleter );
   48296   }
   48297 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48298 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48299 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   48300 
   48301   template<typename Dispatch>
   48302   VULKAN_HPP_INLINE Result Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugUtilsMessengerEXT* pMessenger, Dispatch const &d) const
   48303   {
   48304     return static_cast<Result>( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugUtilsMessengerEXT*>( pMessenger ) ) );
   48305   }
   48306 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48307   template<typename Dispatch>
   48308   VULKAN_HPP_INLINE ResultValueType<DebugUtilsMessengerEXT>::type Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48309   {
   48310     DebugUtilsMessengerEXT messenger;
   48311     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 ) ) );
   48312     return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXT" );
   48313   }
   48314 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48315   template<typename Dispatch>
   48316   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DebugUtilsMessengerEXT,Dispatch>>::type Instance::createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48317   {
   48318     DebugUtilsMessengerEXT messenger;
   48319     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 ) ) );
   48320 
   48321     ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
   48322     return createResultValue<DebugUtilsMessengerEXT,Dispatch>( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXTUnique", deleter );
   48323   }
   48324 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48325 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48326 
   48327   template<typename Dispatch>
   48328   VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   48329   {
   48330     d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   48331   }
   48332 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48333   template<typename Dispatch>
   48334   VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48335   {
   48336     d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   48337   }
   48338 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48339 
   48340   template<typename Dispatch>
   48341   VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d) const
   48342   {
   48343     d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
   48344   }
   48345 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48346   template<typename Dispatch>
   48347   VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
   48348   {
   48349     d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
   48350   }
   48351 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48352 
   48353   template<typename Dispatch>
   48354   VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d) const
   48355   {
   48356     d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ), static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ), reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>( pCallbackData ) );
   48357   }
   48358 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48359   template<typename Dispatch>
   48360   VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d ) const
   48361   {
   48362     d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ), static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ), reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>( &callbackData ) );
   48363   }
   48364 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48365 
   48366   struct DeviceGroupDeviceCreateInfo
   48367   {
   48368     DeviceGroupDeviceCreateInfo( uint32_t physicalDeviceCount_ = 0,
   48369                                  const PhysicalDevice* pPhysicalDevices_ = nullptr )
   48370       : physicalDeviceCount( physicalDeviceCount_ )
   48371       , pPhysicalDevices( pPhysicalDevices_ )
   48372     {
   48373     }
   48374 
   48375     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs )
   48376     {
   48377       memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
   48378     }
   48379 
   48380     DeviceGroupDeviceCreateInfo& operator=( VkDeviceGroupDeviceCreateInfo const & rhs )
   48381     {
   48382       memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
   48383       return *this;
   48384     }
   48385     DeviceGroupDeviceCreateInfo& setPNext( const void* pNext_ )
   48386     {
   48387       pNext = pNext_;
   48388       return *this;
   48389     }
   48390 
   48391     DeviceGroupDeviceCreateInfo& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
   48392     {
   48393       physicalDeviceCount = physicalDeviceCount_;
   48394       return *this;
   48395     }
   48396 
   48397     DeviceGroupDeviceCreateInfo& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
   48398     {
   48399       pPhysicalDevices = pPhysicalDevices_;
   48400       return *this;
   48401     }
   48402 
   48403     operator VkDeviceGroupDeviceCreateInfo const&() const
   48404     {
   48405       return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>(this);
   48406     }
   48407 
   48408     operator VkDeviceGroupDeviceCreateInfo &()
   48409     {
   48410       return *reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(this);
   48411     }
   48412 
   48413     bool operator==( DeviceGroupDeviceCreateInfo const& rhs ) const
   48414     {
   48415       return ( sType == rhs.sType )
   48416           && ( pNext == rhs.pNext )
   48417           && ( physicalDeviceCount == rhs.physicalDeviceCount )
   48418           && ( pPhysicalDevices == rhs.pPhysicalDevices );
   48419     }
   48420 
   48421     bool operator!=( DeviceGroupDeviceCreateInfo const& rhs ) const
   48422     {
   48423       return !operator==( rhs );
   48424     }
   48425 
   48426   private:
   48427     StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo;
   48428 
   48429   public:
   48430     const void* pNext = nullptr;
   48431     uint32_t physicalDeviceCount;
   48432     const PhysicalDevice* pPhysicalDevices;
   48433   };
   48434   static_assert( sizeof( DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), "struct and wrapper have different size!" );
   48435 
   48436   using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
   48437 
   48438 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48439 
   48440   template <typename Dispatch> class UniqueHandleTraits<Instance,Dispatch> {public: using deleter = ObjectDestroy<NoParent,Dispatch>; };
   48441   using UniqueInstance = UniqueHandle<Instance,DispatchLoaderStatic>;
   48442 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48443 
   48444   template<typename Dispatch = DispatchLoaderStatic>
   48445   Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance, Dispatch const &d = Dispatch() );
   48446 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48447   template<typename Dispatch = DispatchLoaderStatic>
   48448   ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() );
   48449 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48450   template<typename Dispatch = DispatchLoaderStatic>
   48451   typename ResultValueType<UniqueHandle<Instance,Dispatch>>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() );
   48452 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48453 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48454 
   48455   template<typename Dispatch>
   48456   VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance, Dispatch const &d)
   48457   {
   48458     return static_cast<Result>( d.vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
   48459   }
   48460 #ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
   48461   template<typename Dispatch>
   48462   VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d )
   48463   {
   48464     Instance instance;
   48465     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 ) ) );
   48466     return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstance" );
   48467   }
   48468 #ifndef VULKAN_HPP_NO_SMART_HANDLE
   48469   template<typename Dispatch>
   48470   VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Instance,Dispatch>>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d )
   48471   {
   48472     Instance instance;
   48473     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 ) ) );
   48474 
   48475     ObjectDestroy<NoParent,Dispatch> deleter( allocator, d );
   48476     return createResultValue<Instance,Dispatch>( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstanceUnique", deleter );
   48477   }
   48478 #endif /*VULKAN_HPP_NO_SMART_HANDLE*/
   48479 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
   48480 
   48481 
   48482   struct BaseOutStructure
   48483   {
   48484     BaseOutStructure(  )
   48485     {
   48486     }
   48487 
   48488     BaseOutStructure( VkBaseOutStructure const & rhs )
   48489     {
   48490       memcpy( this, &rhs, sizeof( BaseOutStructure ) );
   48491     }
   48492 
   48493     BaseOutStructure& operator=( VkBaseOutStructure const & rhs )
   48494     {
   48495       memcpy( this, &rhs, sizeof( BaseOutStructure ) );
   48496       return *this;
   48497     }
   48498     BaseOutStructure& setPNext( struct BaseOutStructure* pNext_ )
   48499     {
   48500       pNext = pNext_;
   48501       return *this;
   48502     }
   48503 
   48504     operator VkBaseOutStructure const&() const
   48505     {
   48506       return *reinterpret_cast<const VkBaseOutStructure*>(this);
   48507     }
   48508 
   48509     operator VkBaseOutStructure &()
   48510     {
   48511       return *reinterpret_cast<VkBaseOutStructure*>(this);
   48512     }
   48513 
   48514     bool operator==( BaseOutStructure const& rhs ) const
   48515     {
   48516       return ( sType == rhs.sType )
   48517           && ( pNext == rhs.pNext );
   48518     }
   48519 
   48520     bool operator!=( BaseOutStructure const& rhs ) const
   48521     {
   48522       return !operator==( rhs );
   48523     }
   48524 
   48525     StructureType sType;
   48526     struct BaseOutStructure* pNext = nullptr;
   48527   };
   48528   static_assert( sizeof( BaseOutStructure ) == sizeof( VkBaseOutStructure ), "struct and wrapper have different size!" );
   48529 
   48530   struct BaseInStructure
   48531   {
   48532     BaseInStructure(  )
   48533     {
   48534     }
   48535 
   48536     BaseInStructure( VkBaseInStructure const & rhs )
   48537     {
   48538       memcpy( this, &rhs, sizeof( BaseInStructure ) );
   48539     }
   48540 
   48541     BaseInStructure& operator=( VkBaseInStructure const & rhs )
   48542     {
   48543       memcpy( this, &rhs, sizeof( BaseInStructure ) );
   48544       return *this;
   48545     }
   48546     BaseInStructure& setPNext( const struct BaseInStructure* pNext_ )
   48547     {
   48548       pNext = pNext_;
   48549       return *this;
   48550     }
   48551 
   48552     operator VkBaseInStructure const&() const
   48553     {
   48554       return *reinterpret_cast<const VkBaseInStructure*>(this);
   48555     }
   48556 
   48557     operator VkBaseInStructure &()
   48558     {
   48559       return *reinterpret_cast<VkBaseInStructure*>(this);
   48560     }
   48561 
   48562     bool operator==( BaseInStructure const& rhs ) const
   48563     {
   48564       return ( sType == rhs.sType )
   48565           && ( pNext == rhs.pNext );
   48566     }
   48567 
   48568     bool operator!=( BaseInStructure const& rhs ) const
   48569     {
   48570       return !operator==( rhs );
   48571     }
   48572 
   48573     StructureType sType;
   48574     const struct BaseInStructure* pNext = nullptr;
   48575   };
   48576   static_assert( sizeof( BaseInStructure ) == sizeof( VkBaseInStructure ), "struct and wrapper have different size!" );
   48577 
   48578   template <> struct isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>{ enum { value = true }; };
   48579   template <> struct isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>{ enum { value = true }; };
   48580   template <> struct isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>{ enum { value = true }; };
   48581   template <> struct isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>{ enum { value = true }; };
   48582 #ifdef VK_USE_PLATFORM_WIN32_NV
   48583   template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>{ enum { value = true }; };
   48584 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   48585 #ifdef VK_USE_PLATFORM_WIN32_NV
   48586   template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>{ enum { value = true }; };
   48587 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   48588   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2>{ enum { value = true }; };
   48589   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePushDescriptorPropertiesKHR>{ enum { value = true }; };
   48590   template <> struct isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>{ enum { value = true }; };
   48591   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceVariablePointerFeatures>{ enum { value = true }; };
   48592   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeatures>{ enum { value = true }; };
   48593   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceIDProperties>{ enum { value = true }; };
   48594 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48595   template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
   48596 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48597 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48598   template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>{ enum { value = true }; };
   48599 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48600 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48601   template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>{ enum { value = true }; };
   48602 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48603 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48604   template <> struct isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>{ enum { value = true }; };
   48605 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48606 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48607   template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>{ enum { value = true }; };
   48608 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48609   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceMultiviewFeatures>{ enum { value = true }; };
   48610   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeatures>{ enum { value = true }; };
   48611   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewProperties>{ enum { value = true }; };
   48612   template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfo>{ enum { value = true }; };
   48613   template <> struct isStructureChainValid<BindBufferMemoryInfo, BindBufferMemoryDeviceGroupInfo>{ enum { value = true }; };
   48614   template <> struct isStructureChainValid<BindImageMemoryInfo, BindImageMemoryDeviceGroupInfo>{ enum { value = true }; };
   48615   template <> struct isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfo>{ enum { value = true }; };
   48616   template <> struct isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfo>{ enum { value = true }; };
   48617   template <> struct isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfo>{ enum { value = true }; };
   48618   template <> struct isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfo>{ enum { value = true }; };
   48619   template <> struct isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHR>{ enum { value = true }; };
   48620   template <> struct isStructureChainValid<BindImageMemoryInfo, BindImageMemorySwapchainInfoKHR>{ enum { value = true }; };
   48621   template <> struct isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>{ enum { value = true }; };
   48622   template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>{ enum { value = true }; };
   48623   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceDiscardRectanglePropertiesEXT>{ enum { value = true }; };
   48624   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
   48625   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDevice16BitStorageFeatures>{ enum { value = true }; };
   48626   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeatures>{ enum { value = true }; };
   48627   template <> struct isStructureChainValid<MemoryRequirements2, MemoryDedicatedRequirements>{ enum { value = true }; };
   48628   template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfo>{ enum { value = true }; };
   48629   template <> struct isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfo>{ enum { value = true }; };
   48630   template <> struct isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfo>{ enum { value = true }; };
   48631   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceSamplerYcbcrConversionFeatures>{ enum { value = true }; };
   48632   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeatures>{ enum { value = true }; };
   48633   template <> struct isStructureChainValid<ImageFormatProperties2, SamplerYcbcrConversionImageFormatProperties>{ enum { value = true }; };
   48634   template <> struct isStructureChainValid<ImageFormatProperties2, TextureLODGatherFormatPropertiesAMD>{ enum { value = true }; };
   48635   template <> struct isStructureChainValid<SubmitInfo, ProtectedSubmitInfo>{ enum { value = true }; };
   48636   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
   48637   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
   48638   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceProtectedMemoryProperties>{ enum { value = true }; };
   48639   template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>{ enum { value = true }; };
   48640   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>{ enum { value = true }; };
   48641   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>{ enum { value = true }; };
   48642   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>{ enum { value = true }; };
   48643   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
   48644   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceInlineUniformBlockFeaturesEXT>{ enum { value = true }; };
   48645   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceInlineUniformBlockFeaturesEXT>{ enum { value = true }; };
   48646   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceInlineUniformBlockPropertiesEXT>{ enum { value = true }; };
   48647   template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetInlineUniformBlockEXT>{ enum { value = true }; };
   48648   template <> struct isStructureChainValid<DescriptorPoolCreateInfo, DescriptorPoolInlineUniformBlockCreateInfoEXT>{ enum { value = true }; };
   48649   template <> struct isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>{ enum { value = true }; };
   48650   template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2, ImageFormatListCreateInfoKHR>{ enum { value = true }; };
   48651   template <> struct isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>{ enum { value = true }; };
   48652   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMaintenance3Properties>{ enum { value = true }; };
   48653   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderDrawParameterFeatures>{ enum { value = true }; };
   48654   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderDrawParameterFeatures>{ enum { value = true }; };
   48655   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceExternalMemoryHostPropertiesEXT>{ enum { value = true }; };
   48656   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceConservativeRasterizationPropertiesEXT>{ enum { value = true }; };
   48657   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShaderCorePropertiesAMD>{ enum { value = true }; };
   48658   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceDescriptorIndexingFeaturesEXT>{ enum { value = true }; };
   48659   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceDescriptorIndexingFeaturesEXT>{ enum { value = true }; };
   48660   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceDescriptorIndexingPropertiesEXT>{ enum { value = true }; };
   48661   template <> struct isStructureChainValid<DescriptorSetAllocateInfo, DescriptorSetVariableDescriptorCountAllocateInfoEXT>{ enum { value = true }; };
   48662   template <> struct isStructureChainValid<DescriptorSetLayoutSupport, DescriptorSetVariableDescriptorCountLayoutSupportEXT>{ enum { value = true }; };
   48663   template <> struct isStructureChainValid<PipelineVertexInputStateCreateInfo, PipelineVertexInputDivisorStateCreateInfoEXT>{ enum { value = true }; };
   48664   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceVertexAttributeDivisorPropertiesEXT>{ enum { value = true }; };
   48665   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePCIBusInfoPropertiesEXT>{ enum { value = true }; };
   48666 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   48667   template <> struct isStructureChainValid<MemoryAllocateInfo, ImportAndroidHardwareBufferInfoANDROID>{ enum { value = true }; };
   48668 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   48669 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   48670   template <> struct isStructureChainValid<ImageFormatProperties2, AndroidHardwareBufferUsageANDROID>{ enum { value = true }; };
   48671 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   48672   template <> struct isStructureChainValid<CommandBufferInheritanceInfo, CommandBufferInheritanceConditionalRenderingInfoEXT>{ enum { value = true }; };
   48673 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   48674   template <> struct isStructureChainValid<ImageCreateInfo, ExternalFormatANDROID>{ enum { value = true }; };
   48675   template <> struct isStructureChainValid<SamplerYcbcrConversionCreateInfo, ExternalFormatANDROID>{ enum { value = true }; };
   48676 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   48677   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDevice8BitStorageFeaturesKHR>{ enum { value = true }; };
   48678   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice8BitStorageFeaturesKHR>{ enum { value = true }; };
   48679   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
   48680   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
   48681   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceVulkanMemoryModelFeaturesKHR>{ enum { value = true }; };
   48682   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVulkanMemoryModelFeaturesKHR>{ enum { value = true }; };
   48683   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderAtomicInt64FeaturesKHR>{ enum { value = true }; };
   48684   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderAtomicInt64FeaturesKHR>{ enum { value = true }; };
   48685   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceVertexAttributeDivisorFeaturesEXT>{ enum { value = true }; };
   48686   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVertexAttributeDivisorFeaturesEXT>{ enum { value = true }; };
   48687   template <> struct isStructureChainValid<ImageViewCreateInfo, ImageViewASTCDecodeModeEXT>{ enum { value = true }; };
   48688   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceASTCDecodeFeaturesEXT>{ enum { value = true }; };
   48689   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceASTCDecodeFeaturesEXT>{ enum { value = true }; };
   48690   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceTransformFeedbackFeaturesEXT>{ enum { value = true }; };
   48691   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceTransformFeedbackFeaturesEXT>{ enum { value = true }; };
   48692   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceTransformFeedbackPropertiesEXT>{ enum { value = true }; };
   48693   template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateStreamCreateInfoEXT>{ enum { value = true }; };
   48694   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceRepresentativeFragmentTestFeaturesNV>{ enum { value = true }; };
   48695   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceRepresentativeFragmentTestFeaturesNV>{ enum { value = true }; };
   48696   template <> struct isStructureChainValid<GraphicsPipelineCreateInfo, PipelineRepresentativeFragmentTestStateCreateInfoNV>{ enum { value = true }; };
   48697   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceExclusiveScissorFeaturesNV>{ enum { value = true }; };
   48698   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceExclusiveScissorFeaturesNV>{ enum { value = true }; };
   48699   template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportExclusiveScissorStateCreateInfoNV>{ enum { value = true }; };
   48700   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceCornerSampledImageFeaturesNV>{ enum { value = true }; };
   48701   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceCornerSampledImageFeaturesNV>{ enum { value = true }; };
   48702   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
   48703   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
   48704   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceFragmentShaderBarycentricFeaturesNV>{ enum { value = true }; };
   48705   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFragmentShaderBarycentricFeaturesNV>{ enum { value = true }; };
   48706   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderImageFootprintFeaturesNV>{ enum { value = true }; };
   48707   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderImageFootprintFeaturesNV>{ enum { value = true }; };
   48708   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
   48709   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
   48710   template <> struct isStructureChainValid<PhysicalDeviceProperties, PhysicalDeviceShadingRateImagePropertiesNV>{ enum { value = true }; };
   48711   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceMeshShaderFeaturesNV>{ enum { value = true }; };
   48712   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMeshShaderFeaturesNV>{ enum { value = true }; };
   48713   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMeshShaderPropertiesNV>{ enum { value = true }; };
   48714   template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetAccelerationStructureNV>{ enum { value = true }; };
   48715   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceRayTracingPropertiesNV>{ enum { value = true }; };
   48716   template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2, PhysicalDeviceImageDrmFormatModifierInfoEXT>{ enum { value = true }; };
   48717   template <> struct isStructureChainValid<ImageCreateInfo, ImageDrmFormatModifierListCreateInfoEXT>{ enum { value = true }; };
   48718   template <> struct isStructureChainValid<ImageCreateInfo, ImageDrmFormatModifierExplicitCreateInfoEXT>{ enum { value = true }; };
   48719   template <> struct isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>{ enum { value = true }; };
   48720   template <> struct isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfo>{ enum { value = true }; };
   48721   template <> struct isStructureChainValid<FormatProperties2, DrmFormatModifierPropertiesListEXT>{ enum { value = true }; };
   48722   template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfo>{ enum { value = true }; };
   48723   template <> struct isStructureChainValid<BindImageMemoryInfo, BindImagePlaneMemoryInfo>{ enum { value = true }; };
   48724   template <> struct isStructureChainValid<ImageMemoryRequirementsInfo2, ImagePlaneMemoryRequirementsInfo>{ enum { value = true }; };
   48725   template <> struct isStructureChainValid<QueueFamilyProperties2, QueueFamilyCheckpointPropertiesNV>{ enum { value = true }; };
   48726   template <> struct isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>{ enum { value = true }; };
   48727   template <> struct isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>{ enum { value = true }; };
   48728   template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>{ enum { value = true }; };
   48729   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSampleLocationsPropertiesEXT>{ enum { value = true }; };
   48730   template <> struct isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>{ enum { value = true }; };
   48731   template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>{ enum { value = true }; };
   48732   template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>{ enum { value = true }; };
   48733   template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>{ enum { value = true }; };
   48734 #ifdef VK_USE_PLATFORM_WIN32_NV
   48735   template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>{ enum { value = true }; };
   48736 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   48737   template <> struct isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>{ enum { value = true }; };
   48738   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSubgroupProperties>{ enum { value = true }; };
   48739   template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2, PhysicalDeviceExternalImageFormatInfo>{ enum { value = true }; };
   48740   template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfo>{ enum { value = true }; };
   48741   template <> struct isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfo>{ enum { value = true }; };
   48742   template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfo>{ enum { value = true }; };
   48743 #ifdef VK_USE_PLATFORM_WIN32_KHR
   48744   template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
   48745 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   48746   template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>{ enum { value = true }; };
   48747   template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryHostPointerInfoEXT>{ enum { value = true }; };
   48748   template <> struct isStructureChainValid<ImageFormatProperties2, ExternalImageFormatProperties>{ enum { value = true }; };
   48749   template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfo>{ enum { value = true }; };
   48750   template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfo>{ enum { value = true }; };
   48751   template <> struct isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>{ enum { value = true }; };
   48752   template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfo>{ enum { value = true }; };
   48753   template <> struct isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHR>{ enum { value = true }; };
   48754   template <> struct isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHR>{ enum { value = true }; };
   48755   template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>{ enum { value = true }; };
   48756   template <> struct isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>{ enum { value = true }; };
   48757   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePointClippingProperties>{ enum { value = true }; };
   48758   template <> struct isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>{ enum { value = true }; };
   48759   template <> struct isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfo>{ enum { value = true }; };
   48760 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   48761 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   48762   template <> struct isStructureChainValid<AndroidHardwareBufferPropertiesANDROID, AndroidHardwareBufferFormatPropertiesANDROID>{ enum { value = true }; };
   48763 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   48764 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   48765   template <> struct isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>{ enum { value = true }; };
   48766   template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>{ enum { value = true }; };
   48767   template <> struct isStructureChainValid<DeviceQueueCreateInfo, DeviceQueueGlobalPriorityCreateInfoEXT>{ enum { value = true }; };
   48768   template <> struct isStructureChainValid<InstanceCreateInfo, DebugUtilsMessengerCreateInfoEXT>{ enum { value = true }; };
   48769   template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationConservativeStateCreateInfoEXT>{ enum { value = true }; };
   48770   template <> struct isStructureChainValid<DescriptorSetLayoutCreateInfo, DescriptorSetLayoutBindingFlagsCreateInfoEXT>{ enum { value = true }; };
   48771   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceDriverPropertiesKHR>{ enum { value = true }; };
   48772   template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportShadingRateImageStateCreateInfoNV>{ enum { value = true }; };
   48773   template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportCoarseSampleOrderStateCreateInfoNV>{ enum { value = true }; };
   48774   template <> struct isStructureChainValid<DeviceCreateInfo, DeviceMemoryOverallocationCreateInfoAMD>{ enum { value = true }; };
   48775   template <> struct isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfo>{ enum { value = true }; };
   48776   VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
   48777   {
   48778     return "(void)";
   48779   }
   48780 
   48781   VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
   48782   {
   48783     return "{}";
   48784   }
   48785 
   48786   VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
   48787   {
   48788     return "(void)";
   48789   }
   48790 
   48791   VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
   48792   {
   48793     return "{}";
   48794   }
   48795 
   48796   VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
   48797   {
   48798     return "(void)";
   48799   }
   48800 
   48801   VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
   48802   {
   48803     return "{}";
   48804   }
   48805 
   48806   VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
   48807   {
   48808     return "(void)";
   48809   }
   48810 
   48811   VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
   48812   {
   48813     return "{}";
   48814   }
   48815 
   48816   VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
   48817   {
   48818     return "(void)";
   48819   }
   48820 
   48821   VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
   48822   {
   48823     return "{}";
   48824   }
   48825 
   48826   VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
   48827   {
   48828     return "(void)";
   48829   }
   48830 
   48831   VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
   48832   {
   48833     return "{}";
   48834   }
   48835 
   48836   VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
   48837   {
   48838     return "(void)";
   48839   }
   48840 
   48841   VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
   48842   {
   48843     return "{}";
   48844   }
   48845 
   48846   VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
   48847   {
   48848     return "(void)";
   48849   }
   48850 
   48851   VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
   48852   {
   48853     return "{}";
   48854   }
   48855 
   48856   VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
   48857   {
   48858     return "(void)";
   48859   }
   48860 
   48861   VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
   48862   {
   48863     return "{}";
   48864   }
   48865 
   48866   VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
   48867   {
   48868     return "(void)";
   48869   }
   48870 
   48871   VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
   48872   {
   48873     return "{}";
   48874   }
   48875 
   48876   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
   48877   {
   48878     return "(void)";
   48879   }
   48880 
   48881   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
   48882   {
   48883     return "{}";
   48884   }
   48885 
   48886   VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
   48887   {
   48888     return "(void)";
   48889   }
   48890 
   48891   VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
   48892   {
   48893     return "{}";
   48894   }
   48895 
   48896   VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
   48897   {
   48898     return "(void)";
   48899   }
   48900 
   48901   VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
   48902   {
   48903     return "{}";
   48904   }
   48905 
   48906   VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
   48907   {
   48908     return "(void)";
   48909   }
   48910 
   48911   VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
   48912   {
   48913     return "{}";
   48914   }
   48915 
   48916   VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
   48917   {
   48918     return "(void)";
   48919   }
   48920 
   48921   VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
   48922   {
   48923     return "{}";
   48924   }
   48925 
   48926   VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
   48927   {
   48928     return "(void)";
   48929   }
   48930 
   48931   VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
   48932   {
   48933     return "{}";
   48934   }
   48935 
   48936   VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
   48937   {
   48938     return "(void)";
   48939   }
   48940 
   48941   VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
   48942   {
   48943     return "{}";
   48944   }
   48945 
   48946   VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
   48947   {
   48948     return "(void)";
   48949   }
   48950 
   48951   VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
   48952   {
   48953     return "{}";
   48954   }
   48955 
   48956   VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
   48957   {
   48958     return "(void)";
   48959   }
   48960 
   48961   VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
   48962   {
   48963     return "{}";
   48964   }
   48965 
   48966   VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
   48967   {
   48968     return "(void)";
   48969   }
   48970 
   48971   VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
   48972   {
   48973     return "{}";
   48974   }
   48975 
   48976   VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
   48977   {
   48978     return "(void)";
   48979   }
   48980 
   48981   VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
   48982   {
   48983     return "{}";
   48984   }
   48985 
   48986   VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
   48987   {
   48988     return "(void)";
   48989   }
   48990 
   48991   VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
   48992   {
   48993     return "{}";
   48994   }
   48995 
   48996   VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
   48997   {
   48998     return "(void)";
   48999   }
   49000 
   49001   VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
   49002   {
   49003     return "{}";
   49004   }
   49005 
   49006   VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
   49007   {
   49008     return "(void)";
   49009   }
   49010 
   49011   VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
   49012   {
   49013     return "{}";
   49014   }
   49015 
   49016   VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
   49017   {
   49018     return "(void)";
   49019   }
   49020 
   49021   VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
   49022   {
   49023     return "{}";
   49024   }
   49025 
   49026   VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBits)
   49027   {
   49028     return "(void)";
   49029   }
   49030 
   49031   VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlags)
   49032   {
   49033     return "{}";
   49034   }
   49035 
   49036   VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
   49037   {
   49038     return "(void)";
   49039   }
   49040 
   49041   VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
   49042   {
   49043     return "{}";
   49044   }
   49045 
   49046   VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
   49047   {
   49048     return "(void)";
   49049   }
   49050 
   49051   VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
   49052   {
   49053     return "{}";
   49054   }
   49055 
   49056 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   49057   VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
   49058   {
   49059     return "(void)";
   49060   }
   49061 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   49062 
   49063 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   49064   VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
   49065   {
   49066     return "{}";
   49067   }
   49068 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   49069 
   49070 #ifdef VK_USE_PLATFORM_VI_NN
   49071   VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
   49072   {
   49073     return "(void)";
   49074   }
   49075 #endif /*VK_USE_PLATFORM_VI_NN*/
   49076 
   49077 #ifdef VK_USE_PLATFORM_VI_NN
   49078   VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
   49079   {
   49080     return "{}";
   49081   }
   49082 #endif /*VK_USE_PLATFORM_VI_NN*/
   49083 
   49084 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   49085   VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
   49086   {
   49087     return "(void)";
   49088   }
   49089 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   49090 
   49091 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   49092   VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
   49093   {
   49094     return "{}";
   49095   }
   49096 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   49097 
   49098 #ifdef VK_USE_PLATFORM_WIN32_KHR
   49099   VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
   49100   {
   49101     return "(void)";
   49102   }
   49103 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   49104 
   49105 #ifdef VK_USE_PLATFORM_WIN32_KHR
   49106   VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
   49107   {
   49108     return "{}";
   49109   }
   49110 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   49111 
   49112 #ifdef VK_USE_PLATFORM_XLIB_KHR
   49113   VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
   49114   {
   49115     return "(void)";
   49116   }
   49117 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   49118 
   49119 #ifdef VK_USE_PLATFORM_XLIB_KHR
   49120   VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
   49121   {
   49122     return "{}";
   49123   }
   49124 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   49125 
   49126 #ifdef VK_USE_PLATFORM_XCB_KHR
   49127   VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
   49128   {
   49129     return "(void)";
   49130   }
   49131 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   49132 
   49133 #ifdef VK_USE_PLATFORM_XCB_KHR
   49134   VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
   49135   {
   49136     return "{}";
   49137   }
   49138 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   49139 
   49140 #ifdef VK_USE_PLATFORM_IOS_MVK
   49141   VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
   49142   {
   49143     return "(void)";
   49144   }
   49145 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   49146 
   49147 #ifdef VK_USE_PLATFORM_IOS_MVK
   49148   VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
   49149   {
   49150     return "{}";
   49151   }
   49152 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   49153 
   49154 #ifdef VK_USE_PLATFORM_MACOS_MVK
   49155   VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
   49156   {
   49157     return "(void)";
   49158   }
   49159 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   49160 
   49161 #ifdef VK_USE_PLATFORM_MACOS_MVK
   49162   VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
   49163   {
   49164     return "{}";
   49165   }
   49166 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   49167 
   49168 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   49169   VULKAN_HPP_INLINE std::string to_string(ImagePipeSurfaceCreateFlagBitsFUCHSIA)
   49170   {
   49171     return "(void)";
   49172   }
   49173 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   49174 
   49175 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   49176   VULKAN_HPP_INLINE std::string to_string(ImagePipeSurfaceCreateFlagsFUCHSIA)
   49177   {
   49178     return "{}";
   49179   }
   49180 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   49181 
   49182   VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBits)
   49183   {
   49184     return "(void)";
   49185   }
   49186 
   49187   VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlags)
   49188   {
   49189     return "{}";
   49190   }
   49191 
   49192   VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
   49193   {
   49194     return "(void)";
   49195   }
   49196 
   49197   VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
   49198   {
   49199     return "{}";
   49200   }
   49201 
   49202   VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
   49203   {
   49204     return "(void)";
   49205   }
   49206 
   49207   VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
   49208   {
   49209     return "{}";
   49210   }
   49211 
   49212   VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
   49213   {
   49214     return "(void)";
   49215   }
   49216 
   49217   VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
   49218   {
   49219     return "{}";
   49220   }
   49221 
   49222   VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
   49223   {
   49224     return "(void)";
   49225   }
   49226 
   49227   VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
   49228   {
   49229     return "{}";
   49230   }
   49231 
   49232   VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
   49233   {
   49234     return "(void)";
   49235   }
   49236 
   49237   VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
   49238   {
   49239     return "{}";
   49240   }
   49241 
   49242   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCreateFlagBitsEXT)
   49243   {
   49244     return "(void)";
   49245   }
   49246 
   49247   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCreateFlagsEXT)
   49248   {
   49249     return "{}";
   49250   }
   49251 
   49252   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCallbackDataFlagBitsEXT)
   49253   {
   49254     return "(void)";
   49255   }
   49256 
   49257   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCallbackDataFlagsEXT)
   49258   {
   49259     return "{}";
   49260   }
   49261 
   49262   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagBitsEXT)
   49263   {
   49264     return "(void)";
   49265   }
   49266 
   49267   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagsEXT)
   49268   {
   49269     return "{}";
   49270   }
   49271 
   49272   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateStreamCreateFlagBitsEXT)
   49273   {
   49274     return "(void)";
   49275   }
   49276 
   49277   VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateStreamCreateFlagsEXT)
   49278   {
   49279     return "{}";
   49280   }
   49281 
   49282   VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
   49283   {
   49284     switch (value)
   49285     {
   49286     case ImageLayout::eUndefined: return "Undefined";
   49287     case ImageLayout::eGeneral: return "General";
   49288     case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
   49289     case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
   49290     case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
   49291     case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
   49292     case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
   49293     case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
   49294     case ImageLayout::ePreinitialized: return "Preinitialized";
   49295     case ImageLayout::eDepthReadOnlyStencilAttachmentOptimal: return "DepthReadOnlyStencilAttachmentOptimal";
   49296     case ImageLayout::eDepthAttachmentStencilReadOnlyOptimal: return "DepthAttachmentStencilReadOnlyOptimal";
   49297     case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
   49298     case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
   49299     case ImageLayout::eShadingRateOptimalNV: return "ShadingRateOptimalNV";
   49300     default: return "invalid";
   49301     }
   49302   }
   49303 
   49304   VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
   49305   {
   49306     switch (value)
   49307     {
   49308     case AttachmentLoadOp::eLoad: return "Load";
   49309     case AttachmentLoadOp::eClear: return "Clear";
   49310     case AttachmentLoadOp::eDontCare: return "DontCare";
   49311     default: return "invalid";
   49312     }
   49313   }
   49314 
   49315   VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
   49316   {
   49317     switch (value)
   49318     {
   49319     case AttachmentStoreOp::eStore: return "Store";
   49320     case AttachmentStoreOp::eDontCare: return "DontCare";
   49321     default: return "invalid";
   49322     }
   49323   }
   49324 
   49325   VULKAN_HPP_INLINE std::string to_string(ImageType value)
   49326   {
   49327     switch (value)
   49328     {
   49329     case ImageType::e1D: return "1D";
   49330     case ImageType::e2D: return "2D";
   49331     case ImageType::e3D: return "3D";
   49332     default: return "invalid";
   49333     }
   49334   }
   49335 
   49336   VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
   49337   {
   49338     switch (value)
   49339     {
   49340     case ImageTiling::eOptimal: return "Optimal";
   49341     case ImageTiling::eLinear: return "Linear";
   49342     case ImageTiling::eDrmFormatModifierEXT: return "DrmFormatModifierEXT";
   49343     default: return "invalid";
   49344     }
   49345   }
   49346 
   49347   VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
   49348   {
   49349     switch (value)
   49350     {
   49351     case ImageViewType::e1D: return "1D";
   49352     case ImageViewType::e2D: return "2D";
   49353     case ImageViewType::e3D: return "3D";
   49354     case ImageViewType::eCube: return "Cube";
   49355     case ImageViewType::e1DArray: return "1DArray";
   49356     case ImageViewType::e2DArray: return "2DArray";
   49357     case ImageViewType::eCubeArray: return "CubeArray";
   49358     default: return "invalid";
   49359     }
   49360   }
   49361 
   49362   VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
   49363   {
   49364     switch (value)
   49365     {
   49366     case CommandBufferLevel::ePrimary: return "Primary";
   49367     case CommandBufferLevel::eSecondary: return "Secondary";
   49368     default: return "invalid";
   49369     }
   49370   }
   49371 
   49372   VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
   49373   {
   49374     switch (value)
   49375     {
   49376     case ComponentSwizzle::eIdentity: return "Identity";
   49377     case ComponentSwizzle::eZero: return "Zero";
   49378     case ComponentSwizzle::eOne: return "One";
   49379     case ComponentSwizzle::eR: return "R";
   49380     case ComponentSwizzle::eG: return "G";
   49381     case ComponentSwizzle::eB: return "B";
   49382     case ComponentSwizzle::eA: return "A";
   49383     default: return "invalid";
   49384     }
   49385   }
   49386 
   49387   VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
   49388   {
   49389     switch (value)
   49390     {
   49391     case DescriptorType::eSampler: return "Sampler";
   49392     case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
   49393     case DescriptorType::eSampledImage: return "SampledImage";
   49394     case DescriptorType::eStorageImage: return "StorageImage";
   49395     case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
   49396     case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
   49397     case DescriptorType::eUniformBuffer: return "UniformBuffer";
   49398     case DescriptorType::eStorageBuffer: return "StorageBuffer";
   49399     case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
   49400     case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
   49401     case DescriptorType::eInputAttachment: return "InputAttachment";
   49402     case DescriptorType::eInlineUniformBlockEXT: return "InlineUniformBlockEXT";
   49403     case DescriptorType::eAccelerationStructureNV: return "AccelerationStructureNV";
   49404     default: return "invalid";
   49405     }
   49406   }
   49407 
   49408   VULKAN_HPP_INLINE std::string to_string(QueryType value)
   49409   {
   49410     switch (value)
   49411     {
   49412     case QueryType::eOcclusion: return "Occlusion";
   49413     case QueryType::ePipelineStatistics: return "PipelineStatistics";
   49414     case QueryType::eTimestamp: return "Timestamp";
   49415     case QueryType::eTransformFeedbackStreamEXT: return "TransformFeedbackStreamEXT";
   49416     case QueryType::eAccelerationStructureCompactedSizeNV: return "AccelerationStructureCompactedSizeNV";
   49417     default: return "invalid";
   49418     }
   49419   }
   49420 
   49421   VULKAN_HPP_INLINE std::string to_string(BorderColor value)
   49422   {
   49423     switch (value)
   49424     {
   49425     case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
   49426     case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
   49427     case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
   49428     case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
   49429     case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
   49430     case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
   49431     default: return "invalid";
   49432     }
   49433   }
   49434 
   49435   VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
   49436   {
   49437     switch (value)
   49438     {
   49439     case PipelineBindPoint::eGraphics: return "Graphics";
   49440     case PipelineBindPoint::eCompute: return "Compute";
   49441     case PipelineBindPoint::eRayTracingNV: return "RayTracingNV";
   49442     default: return "invalid";
   49443     }
   49444   }
   49445 
   49446   VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
   49447   {
   49448     switch (value)
   49449     {
   49450     case PipelineCacheHeaderVersion::eOne: return "One";
   49451     default: return "invalid";
   49452     }
   49453   }
   49454 
   49455   VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
   49456   {
   49457     switch (value)
   49458     {
   49459     case PrimitiveTopology::ePointList: return "PointList";
   49460     case PrimitiveTopology::eLineList: return "LineList";
   49461     case PrimitiveTopology::eLineStrip: return "LineStrip";
   49462     case PrimitiveTopology::eTriangleList: return "TriangleList";
   49463     case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
   49464     case PrimitiveTopology::eTriangleFan: return "TriangleFan";
   49465     case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
   49466     case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
   49467     case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
   49468     case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
   49469     case PrimitiveTopology::ePatchList: return "PatchList";
   49470     default: return "invalid";
   49471     }
   49472   }
   49473 
   49474   VULKAN_HPP_INLINE std::string to_string(SharingMode value)
   49475   {
   49476     switch (value)
   49477     {
   49478     case SharingMode::eExclusive: return "Exclusive";
   49479     case SharingMode::eConcurrent: return "Concurrent";
   49480     default: return "invalid";
   49481     }
   49482   }
   49483 
   49484   VULKAN_HPP_INLINE std::string to_string(IndexType value)
   49485   {
   49486     switch (value)
   49487     {
   49488     case IndexType::eUint16: return "Uint16";
   49489     case IndexType::eUint32: return "Uint32";
   49490     case IndexType::eNoneNV: return "NoneNV";
   49491     default: return "invalid";
   49492     }
   49493   }
   49494 
   49495   VULKAN_HPP_INLINE std::string to_string(Filter value)
   49496   {
   49497     switch (value)
   49498     {
   49499     case Filter::eNearest: return "Nearest";
   49500     case Filter::eLinear: return "Linear";
   49501     case Filter::eCubicIMG: return "CubicIMG";
   49502     default: return "invalid";
   49503     }
   49504   }
   49505 
   49506   VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
   49507   {
   49508     switch (value)
   49509     {
   49510     case SamplerMipmapMode::eNearest: return "Nearest";
   49511     case SamplerMipmapMode::eLinear: return "Linear";
   49512     default: return "invalid";
   49513     }
   49514   }
   49515 
   49516   VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
   49517   {
   49518     switch (value)
   49519     {
   49520     case SamplerAddressMode::eRepeat: return "Repeat";
   49521     case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
   49522     case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
   49523     case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
   49524     case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
   49525     default: return "invalid";
   49526     }
   49527   }
   49528 
   49529   VULKAN_HPP_INLINE std::string to_string(CompareOp value)
   49530   {
   49531     switch (value)
   49532     {
   49533     case CompareOp::eNever: return "Never";
   49534     case CompareOp::eLess: return "Less";
   49535     case CompareOp::eEqual: return "Equal";
   49536     case CompareOp::eLessOrEqual: return "LessOrEqual";
   49537     case CompareOp::eGreater: return "Greater";
   49538     case CompareOp::eNotEqual: return "NotEqual";
   49539     case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
   49540     case CompareOp::eAlways: return "Always";
   49541     default: return "invalid";
   49542     }
   49543   }
   49544 
   49545   VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
   49546   {
   49547     switch (value)
   49548     {
   49549     case PolygonMode::eFill: return "Fill";
   49550     case PolygonMode::eLine: return "Line";
   49551     case PolygonMode::ePoint: return "Point";
   49552     case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
   49553     default: return "invalid";
   49554     }
   49555   }
   49556 
   49557   VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
   49558   {
   49559     switch (value)
   49560     {
   49561     case CullModeFlagBits::eNone: return "None";
   49562     case CullModeFlagBits::eFront: return "Front";
   49563     case CullModeFlagBits::eBack: return "Back";
   49564     case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
   49565     default: return "invalid";
   49566     }
   49567   }
   49568 
   49569   VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
   49570   {
   49571     if (!value) return "{}";
   49572     std::string result;
   49573     if (value & CullModeFlagBits::eNone) result += "None | ";
   49574     if (value & CullModeFlagBits::eFront) result += "Front | ";
   49575     if (value & CullModeFlagBits::eBack) result += "Back | ";
   49576     if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
   49577     return "{" + result.substr(0, result.size() - 3) + "}";
   49578   }
   49579 
   49580   VULKAN_HPP_INLINE std::string to_string(FrontFace value)
   49581   {
   49582     switch (value)
   49583     {
   49584     case FrontFace::eCounterClockwise: return "CounterClockwise";
   49585     case FrontFace::eClockwise: return "Clockwise";
   49586     default: return "invalid";
   49587     }
   49588   }
   49589 
   49590   VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
   49591   {
   49592     switch (value)
   49593     {
   49594     case BlendFactor::eZero: return "Zero";
   49595     case BlendFactor::eOne: return "One";
   49596     case BlendFactor::eSrcColor: return "SrcColor";
   49597     case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
   49598     case BlendFactor::eDstColor: return "DstColor";
   49599     case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
   49600     case BlendFactor::eSrcAlpha: return "SrcAlpha";
   49601     case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
   49602     case BlendFactor::eDstAlpha: return "DstAlpha";
   49603     case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
   49604     case BlendFactor::eConstantColor: return "ConstantColor";
   49605     case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
   49606     case BlendFactor::eConstantAlpha: return "ConstantAlpha";
   49607     case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
   49608     case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
   49609     case BlendFactor::eSrc1Color: return "Src1Color";
   49610     case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
   49611     case BlendFactor::eSrc1Alpha: return "Src1Alpha";
   49612     case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
   49613     default: return "invalid";
   49614     }
   49615   }
   49616 
   49617   VULKAN_HPP_INLINE std::string to_string(BlendOp value)
   49618   {
   49619     switch (value)
   49620     {
   49621     case BlendOp::eAdd: return "Add";
   49622     case BlendOp::eSubtract: return "Subtract";
   49623     case BlendOp::eReverseSubtract: return "ReverseSubtract";
   49624     case BlendOp::eMin: return "Min";
   49625     case BlendOp::eMax: return "Max";
   49626     case BlendOp::eZeroEXT: return "ZeroEXT";
   49627     case BlendOp::eSrcEXT: return "SrcEXT";
   49628     case BlendOp::eDstEXT: return "DstEXT";
   49629     case BlendOp::eSrcOverEXT: return "SrcOverEXT";
   49630     case BlendOp::eDstOverEXT: return "DstOverEXT";
   49631     case BlendOp::eSrcInEXT: return "SrcInEXT";
   49632     case BlendOp::eDstInEXT: return "DstInEXT";
   49633     case BlendOp::eSrcOutEXT: return "SrcOutEXT";
   49634     case BlendOp::eDstOutEXT: return "DstOutEXT";
   49635     case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
   49636     case BlendOp::eDstAtopEXT: return "DstAtopEXT";
   49637     case BlendOp::eXorEXT: return "XorEXT";
   49638     case BlendOp::eMultiplyEXT: return "MultiplyEXT";
   49639     case BlendOp::eScreenEXT: return "ScreenEXT";
   49640     case BlendOp::eOverlayEXT: return "OverlayEXT";
   49641     case BlendOp::eDarkenEXT: return "DarkenEXT";
   49642     case BlendOp::eLightenEXT: return "LightenEXT";
   49643     case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
   49644     case BlendOp::eColorburnEXT: return "ColorburnEXT";
   49645     case BlendOp::eHardlightEXT: return "HardlightEXT";
   49646     case BlendOp::eSoftlightEXT: return "SoftlightEXT";
   49647     case BlendOp::eDifferenceEXT: return "DifferenceEXT";
   49648     case BlendOp::eExclusionEXT: return "ExclusionEXT";
   49649     case BlendOp::eInvertEXT: return "InvertEXT";
   49650     case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
   49651     case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
   49652     case BlendOp::eLinearburnEXT: return "LinearburnEXT";
   49653     case BlendOp::eVividlightEXT: return "VividlightEXT";
   49654     case BlendOp::eLinearlightEXT: return "LinearlightEXT";
   49655     case BlendOp::ePinlightEXT: return "PinlightEXT";
   49656     case BlendOp::eHardmixEXT: return "HardmixEXT";
   49657     case BlendOp::eHslHueEXT: return "HslHueEXT";
   49658     case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
   49659     case BlendOp::eHslColorEXT: return "HslColorEXT";
   49660     case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
   49661     case BlendOp::ePlusEXT: return "PlusEXT";
   49662     case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
   49663     case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
   49664     case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
   49665     case BlendOp::eMinusEXT: return "MinusEXT";
   49666     case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
   49667     case BlendOp::eContrastEXT: return "ContrastEXT";
   49668     case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
   49669     case BlendOp::eRedEXT: return "RedEXT";
   49670     case BlendOp::eGreenEXT: return "GreenEXT";
   49671     case BlendOp::eBlueEXT: return "BlueEXT";
   49672     default: return "invalid";
   49673     }
   49674   }
   49675 
   49676   VULKAN_HPP_INLINE std::string to_string(StencilOp value)
   49677   {
   49678     switch (value)
   49679     {
   49680     case StencilOp::eKeep: return "Keep";
   49681     case StencilOp::eZero: return "Zero";
   49682     case StencilOp::eReplace: return "Replace";
   49683     case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
   49684     case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
   49685     case StencilOp::eInvert: return "Invert";
   49686     case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
   49687     case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
   49688     default: return "invalid";
   49689     }
   49690   }
   49691 
   49692   VULKAN_HPP_INLINE std::string to_string(LogicOp value)
   49693   {
   49694     switch (value)
   49695     {
   49696     case LogicOp::eClear: return "Clear";
   49697     case LogicOp::eAnd: return "And";
   49698     case LogicOp::eAndReverse: return "AndReverse";
   49699     case LogicOp::eCopy: return "Copy";
   49700     case LogicOp::eAndInverted: return "AndInverted";
   49701     case LogicOp::eNoOp: return "NoOp";
   49702     case LogicOp::eXor: return "Xor";
   49703     case LogicOp::eOr: return "Or";
   49704     case LogicOp::eNor: return "Nor";
   49705     case LogicOp::eEquivalent: return "Equivalent";
   49706     case LogicOp::eInvert: return "Invert";
   49707     case LogicOp::eOrReverse: return "OrReverse";
   49708     case LogicOp::eCopyInverted: return "CopyInverted";
   49709     case LogicOp::eOrInverted: return "OrInverted";
   49710     case LogicOp::eNand: return "Nand";
   49711     case LogicOp::eSet: return "Set";
   49712     default: return "invalid";
   49713     }
   49714   }
   49715 
   49716   VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
   49717   {
   49718     switch (value)
   49719     {
   49720     case InternalAllocationType::eExecutable: return "Executable";
   49721     default: return "invalid";
   49722     }
   49723   }
   49724 
   49725   VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
   49726   {
   49727     switch (value)
   49728     {
   49729     case SystemAllocationScope::eCommand: return "Command";
   49730     case SystemAllocationScope::eObject: return "Object";
   49731     case SystemAllocationScope::eCache: return "Cache";
   49732     case SystemAllocationScope::eDevice: return "Device";
   49733     case SystemAllocationScope::eInstance: return "Instance";
   49734     default: return "invalid";
   49735     }
   49736   }
   49737 
   49738   VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
   49739   {
   49740     switch (value)
   49741     {
   49742     case PhysicalDeviceType::eOther: return "Other";
   49743     case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
   49744     case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
   49745     case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
   49746     case PhysicalDeviceType::eCpu: return "Cpu";
   49747     default: return "invalid";
   49748     }
   49749   }
   49750 
   49751   VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
   49752   {
   49753     switch (value)
   49754     {
   49755     case VertexInputRate::eVertex: return "Vertex";
   49756     case VertexInputRate::eInstance: return "Instance";
   49757     default: return "invalid";
   49758     }
   49759   }
   49760 
   49761   VULKAN_HPP_INLINE std::string to_string(Format value)
   49762   {
   49763     switch (value)
   49764     {
   49765     case Format::eUndefined: return "Undefined";
   49766     case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
   49767     case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
   49768     case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
   49769     case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
   49770     case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
   49771     case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
   49772     case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
   49773     case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
   49774     case Format::eR8Unorm: return "R8Unorm";
   49775     case Format::eR8Snorm: return "R8Snorm";
   49776     case Format::eR8Uscaled: return "R8Uscaled";
   49777     case Format::eR8Sscaled: return "R8Sscaled";
   49778     case Format::eR8Uint: return "R8Uint";
   49779     case Format::eR8Sint: return "R8Sint";
   49780     case Format::eR8Srgb: return "R8Srgb";
   49781     case Format::eR8G8Unorm: return "R8G8Unorm";
   49782     case Format::eR8G8Snorm: return "R8G8Snorm";
   49783     case Format::eR8G8Uscaled: return "R8G8Uscaled";
   49784     case Format::eR8G8Sscaled: return "R8G8Sscaled";
   49785     case Format::eR8G8Uint: return "R8G8Uint";
   49786     case Format::eR8G8Sint: return "R8G8Sint";
   49787     case Format::eR8G8Srgb: return "R8G8Srgb";
   49788     case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
   49789     case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
   49790     case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
   49791     case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
   49792     case Format::eR8G8B8Uint: return "R8G8B8Uint";
   49793     case Format::eR8G8B8Sint: return "R8G8B8Sint";
   49794     case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
   49795     case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
   49796     case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
   49797     case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
   49798     case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
   49799     case Format::eB8G8R8Uint: return "B8G8R8Uint";
   49800     case Format::eB8G8R8Sint: return "B8G8R8Sint";
   49801     case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
   49802     case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
   49803     case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
   49804     case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
   49805     case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
   49806     case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
   49807     case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
   49808     case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
   49809     case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
   49810     case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
   49811     case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
   49812     case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
   49813     case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
   49814     case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
   49815     case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
   49816     case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
   49817     case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
   49818     case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
   49819     case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
   49820     case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
   49821     case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
   49822     case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
   49823     case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
   49824     case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
   49825     case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
   49826     case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
   49827     case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
   49828     case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
   49829     case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
   49830     case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
   49831     case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
   49832     case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
   49833     case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
   49834     case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
   49835     case Format::eR16Unorm: return "R16Unorm";
   49836     case Format::eR16Snorm: return "R16Snorm";
   49837     case Format::eR16Uscaled: return "R16Uscaled";
   49838     case Format::eR16Sscaled: return "R16Sscaled";
   49839     case Format::eR16Uint: return "R16Uint";
   49840     case Format::eR16Sint: return "R16Sint";
   49841     case Format::eR16Sfloat: return "R16Sfloat";
   49842     case Format::eR16G16Unorm: return "R16G16Unorm";
   49843     case Format::eR16G16Snorm: return "R16G16Snorm";
   49844     case Format::eR16G16Uscaled: return "R16G16Uscaled";
   49845     case Format::eR16G16Sscaled: return "R16G16Sscaled";
   49846     case Format::eR16G16Uint: return "R16G16Uint";
   49847     case Format::eR16G16Sint: return "R16G16Sint";
   49848     case Format::eR16G16Sfloat: return "R16G16Sfloat";
   49849     case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
   49850     case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
   49851     case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
   49852     case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
   49853     case Format::eR16G16B16Uint: return "R16G16B16Uint";
   49854     case Format::eR16G16B16Sint: return "R16G16B16Sint";
   49855     case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
   49856     case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
   49857     case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
   49858     case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
   49859     case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
   49860     case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
   49861     case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
   49862     case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
   49863     case Format::eR32Uint: return "R32Uint";
   49864     case Format::eR32Sint: return "R32Sint";
   49865     case Format::eR32Sfloat: return "R32Sfloat";
   49866     case Format::eR32G32Uint: return "R32G32Uint";
   49867     case Format::eR32G32Sint: return "R32G32Sint";
   49868     case Format::eR32G32Sfloat: return "R32G32Sfloat";
   49869     case Format::eR32G32B32Uint: return "R32G32B32Uint";
   49870     case Format::eR32G32B32Sint: return "R32G32B32Sint";
   49871     case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
   49872     case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
   49873     case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
   49874     case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
   49875     case Format::eR64Uint: return "R64Uint";
   49876     case Format::eR64Sint: return "R64Sint";
   49877     case Format::eR64Sfloat: return "R64Sfloat";
   49878     case Format::eR64G64Uint: return "R64G64Uint";
   49879     case Format::eR64G64Sint: return "R64G64Sint";
   49880     case Format::eR64G64Sfloat: return "R64G64Sfloat";
   49881     case Format::eR64G64B64Uint: return "R64G64B64Uint";
   49882     case Format::eR64G64B64Sint: return "R64G64B64Sint";
   49883     case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
   49884     case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
   49885     case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
   49886     case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
   49887     case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
   49888     case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
   49889     case Format::eD16Unorm: return "D16Unorm";
   49890     case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
   49891     case Format::eD32Sfloat: return "D32Sfloat";
   49892     case Format::eS8Uint: return "S8Uint";
   49893     case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
   49894     case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
   49895     case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
   49896     case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
   49897     case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
   49898     case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
   49899     case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
   49900     case Format::eBc2UnormBlock: return "Bc2UnormBlock";
   49901     case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
   49902     case Format::eBc3UnormBlock: return "Bc3UnormBlock";
   49903     case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
   49904     case Format::eBc4UnormBlock: return "Bc4UnormBlock";
   49905     case Format::eBc4SnormBlock: return "Bc4SnormBlock";
   49906     case Format::eBc5UnormBlock: return "Bc5UnormBlock";
   49907     case Format::eBc5SnormBlock: return "Bc5SnormBlock";
   49908     case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
   49909     case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
   49910     case Format::eBc7UnormBlock: return "Bc7UnormBlock";
   49911     case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
   49912     case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
   49913     case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
   49914     case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
   49915     case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
   49916     case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
   49917     case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
   49918     case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
   49919     case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
   49920     case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
   49921     case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
   49922     case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
   49923     case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
   49924     case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
   49925     case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
   49926     case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
   49927     case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
   49928     case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
   49929     case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
   49930     case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
   49931     case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
   49932     case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
   49933     case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
   49934     case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
   49935     case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
   49936     case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
   49937     case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
   49938     case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
   49939     case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
   49940     case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
   49941     case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
   49942     case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
   49943     case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
   49944     case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
   49945     case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
   49946     case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
   49947     case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
   49948     case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
   49949     case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
   49950     case Format::eG8B8G8R8422Unorm: return "G8B8G8R8422Unorm";
   49951     case Format::eB8G8R8G8422Unorm: return "B8G8R8G8422Unorm";
   49952     case Format::eG8B8R83Plane420Unorm: return "G8B8R83Plane420Unorm";
   49953     case Format::eG8B8R82Plane420Unorm: return "G8B8R82Plane420Unorm";
   49954     case Format::eG8B8R83Plane422Unorm: return "G8B8R83Plane422Unorm";
   49955     case Format::eG8B8R82Plane422Unorm: return "G8B8R82Plane422Unorm";
   49956     case Format::eG8B8R83Plane444Unorm: return "G8B8R83Plane444Unorm";
   49957     case Format::eR10X6UnormPack16: return "R10X6UnormPack16";
   49958     case Format::eR10X6G10X6Unorm2Pack16: return "R10X6G10X6Unorm2Pack16";
   49959     case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return "R10X6G10X6B10X6A10X6Unorm4Pack16";
   49960     case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return "G10X6B10X6G10X6R10X6422Unorm4Pack16";
   49961     case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return "B10X6G10X6R10X6G10X6422Unorm4Pack16";
   49962     case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return "G10X6B10X6R10X63Plane420Unorm3Pack16";
   49963     case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return "G10X6B10X6R10X62Plane420Unorm3Pack16";
   49964     case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return "G10X6B10X6R10X63Plane422Unorm3Pack16";
   49965     case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return "G10X6B10X6R10X62Plane422Unorm3Pack16";
   49966     case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return "G10X6B10X6R10X63Plane444Unorm3Pack16";
   49967     case Format::eR12X4UnormPack16: return "R12X4UnormPack16";
   49968     case Format::eR12X4G12X4Unorm2Pack16: return "R12X4G12X4Unorm2Pack16";
   49969     case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return "R12X4G12X4B12X4A12X4Unorm4Pack16";
   49970     case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return "G12X4B12X4G12X4R12X4422Unorm4Pack16";
   49971     case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return "B12X4G12X4R12X4G12X4422Unorm4Pack16";
   49972     case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return "G12X4B12X4R12X43Plane420Unorm3Pack16";
   49973     case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return "G12X4B12X4R12X42Plane420Unorm3Pack16";
   49974     case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return "G12X4B12X4R12X43Plane422Unorm3Pack16";
   49975     case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return "G12X4B12X4R12X42Plane422Unorm3Pack16";
   49976     case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return "G12X4B12X4R12X43Plane444Unorm3Pack16";
   49977     case Format::eG16B16G16R16422Unorm: return "G16B16G16R16422Unorm";
   49978     case Format::eB16G16R16G16422Unorm: return "B16G16R16G16422Unorm";
   49979     case Format::eG16B16R163Plane420Unorm: return "G16B16R163Plane420Unorm";
   49980     case Format::eG16B16R162Plane420Unorm: return "G16B16R162Plane420Unorm";
   49981     case Format::eG16B16R163Plane422Unorm: return "G16B16R163Plane422Unorm";
   49982     case Format::eG16B16R162Plane422Unorm: return "G16B16R162Plane422Unorm";
   49983     case Format::eG16B16R163Plane444Unorm: return "G16B16R163Plane444Unorm";
   49984     case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
   49985     case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
   49986     case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
   49987     case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
   49988     case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
   49989     case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
   49990     case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
   49991     case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
   49992     default: return "invalid";
   49993     }
   49994   }
   49995 
   49996   VULKAN_HPP_INLINE std::string to_string(StructureType value)
   49997   {
   49998     switch (value)
   49999     {
   50000     case StructureType::eApplicationInfo: return "ApplicationInfo";
   50001     case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
   50002     case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
   50003     case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
   50004     case StructureType::eSubmitInfo: return "SubmitInfo";
   50005     case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
   50006     case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
   50007     case StructureType::eBindSparseInfo: return "BindSparseInfo";
   50008     case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
   50009     case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
   50010     case StructureType::eEventCreateInfo: return "EventCreateInfo";
   50011     case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
   50012     case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
   50013     case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
   50014     case StructureType::eImageCreateInfo: return "ImageCreateInfo";
   50015     case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
   50016     case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
   50017     case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
   50018     case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
   50019     case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
   50020     case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
   50021     case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
   50022     case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
   50023     case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
   50024     case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
   50025     case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
   50026     case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
   50027     case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
   50028     case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
   50029     case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
   50030     case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
   50031     case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
   50032     case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
   50033     case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
   50034     case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
   50035     case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
   50036     case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
   50037     case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
   50038     case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
   50039     case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
   50040     case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
   50041     case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
   50042     case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
   50043     case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
   50044     case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
   50045     case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
   50046     case StructureType::eMemoryBarrier: return "MemoryBarrier";
   50047     case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
   50048     case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
   50049     case StructureType::ePhysicalDeviceSubgroupProperties: return "PhysicalDeviceSubgroupProperties";
   50050     case StructureType::eBindBufferMemoryInfo: return "BindBufferMemoryInfo";
   50051     case StructureType::eBindImageMemoryInfo: return "BindImageMemoryInfo";
   50052     case StructureType::ePhysicalDevice16BitStorageFeatures: return "PhysicalDevice16BitStorageFeatures";
   50053     case StructureType::eMemoryDedicatedRequirements: return "MemoryDedicatedRequirements";
   50054     case StructureType::eMemoryDedicatedAllocateInfo: return "MemoryDedicatedAllocateInfo";
   50055     case StructureType::eMemoryAllocateFlagsInfo: return "MemoryAllocateFlagsInfo";
   50056     case StructureType::eDeviceGroupRenderPassBeginInfo: return "DeviceGroupRenderPassBeginInfo";
   50057     case StructureType::eDeviceGroupCommandBufferBeginInfo: return "DeviceGroupCommandBufferBeginInfo";
   50058     case StructureType::eDeviceGroupSubmitInfo: return "DeviceGroupSubmitInfo";
   50059     case StructureType::eDeviceGroupBindSparseInfo: return "DeviceGroupBindSparseInfo";
   50060     case StructureType::eBindBufferMemoryDeviceGroupInfo: return "BindBufferMemoryDeviceGroupInfo";
   50061     case StructureType::eBindImageMemoryDeviceGroupInfo: return "BindImageMemoryDeviceGroupInfo";
   50062     case StructureType::ePhysicalDeviceGroupProperties: return "PhysicalDeviceGroupProperties";
   50063     case StructureType::eDeviceGroupDeviceCreateInfo: return "DeviceGroupDeviceCreateInfo";
   50064     case StructureType::eBufferMemoryRequirementsInfo2: return "BufferMemoryRequirementsInfo2";
   50065     case StructureType::eImageMemoryRequirementsInfo2: return "ImageMemoryRequirementsInfo2";
   50066     case StructureType::eImageSparseMemoryRequirementsInfo2: return "ImageSparseMemoryRequirementsInfo2";
   50067     case StructureType::eMemoryRequirements2: return "MemoryRequirements2";
   50068     case StructureType::eSparseImageMemoryRequirements2: return "SparseImageMemoryRequirements2";
   50069     case StructureType::ePhysicalDeviceFeatures2: return "PhysicalDeviceFeatures2";
   50070     case StructureType::ePhysicalDeviceProperties2: return "PhysicalDeviceProperties2";
   50071     case StructureType::eFormatProperties2: return "FormatProperties2";
   50072     case StructureType::eImageFormatProperties2: return "ImageFormatProperties2";
   50073     case StructureType::ePhysicalDeviceImageFormatInfo2: return "PhysicalDeviceImageFormatInfo2";
   50074     case StructureType::eQueueFamilyProperties2: return "QueueFamilyProperties2";
   50075     case StructureType::ePhysicalDeviceMemoryProperties2: return "PhysicalDeviceMemoryProperties2";
   50076     case StructureType::eSparseImageFormatProperties2: return "SparseImageFormatProperties2";
   50077     case StructureType::ePhysicalDeviceSparseImageFormatInfo2: return "PhysicalDeviceSparseImageFormatInfo2";
   50078     case StructureType::ePhysicalDevicePointClippingProperties: return "PhysicalDevicePointClippingProperties";
   50079     case StructureType::eRenderPassInputAttachmentAspectCreateInfo: return "RenderPassInputAttachmentAspectCreateInfo";
   50080     case StructureType::eImageViewUsageCreateInfo: return "ImageViewUsageCreateInfo";
   50081     case StructureType::ePipelineTessellationDomainOriginStateCreateInfo: return "PipelineTessellationDomainOriginStateCreateInfo";
   50082     case StructureType::eRenderPassMultiviewCreateInfo: return "RenderPassMultiviewCreateInfo";
   50083     case StructureType::ePhysicalDeviceMultiviewFeatures: return "PhysicalDeviceMultiviewFeatures";
   50084     case StructureType::ePhysicalDeviceMultiviewProperties: return "PhysicalDeviceMultiviewProperties";
   50085     case StructureType::ePhysicalDeviceVariablePointerFeatures: return "PhysicalDeviceVariablePointerFeatures";
   50086     case StructureType::eProtectedSubmitInfo: return "ProtectedSubmitInfo";
   50087     case StructureType::ePhysicalDeviceProtectedMemoryFeatures: return "PhysicalDeviceProtectedMemoryFeatures";
   50088     case StructureType::ePhysicalDeviceProtectedMemoryProperties: return "PhysicalDeviceProtectedMemoryProperties";
   50089     case StructureType::eDeviceQueueInfo2: return "DeviceQueueInfo2";
   50090     case StructureType::eSamplerYcbcrConversionCreateInfo: return "SamplerYcbcrConversionCreateInfo";
   50091     case StructureType::eSamplerYcbcrConversionInfo: return "SamplerYcbcrConversionInfo";
   50092     case StructureType::eBindImagePlaneMemoryInfo: return "BindImagePlaneMemoryInfo";
   50093     case StructureType::eImagePlaneMemoryRequirementsInfo: return "ImagePlaneMemoryRequirementsInfo";
   50094     case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures: return "PhysicalDeviceSamplerYcbcrConversionFeatures";
   50095     case StructureType::eSamplerYcbcrConversionImageFormatProperties: return "SamplerYcbcrConversionImageFormatProperties";
   50096     case StructureType::eDescriptorUpdateTemplateCreateInfo: return "DescriptorUpdateTemplateCreateInfo";
   50097     case StructureType::ePhysicalDeviceExternalImageFormatInfo: return "PhysicalDeviceExternalImageFormatInfo";
   50098     case StructureType::eExternalImageFormatProperties: return "ExternalImageFormatProperties";
   50099     case StructureType::ePhysicalDeviceExternalBufferInfo: return "PhysicalDeviceExternalBufferInfo";
   50100     case StructureType::eExternalBufferProperties: return "ExternalBufferProperties";
   50101     case StructureType::ePhysicalDeviceIdProperties: return "PhysicalDeviceIdProperties";
   50102     case StructureType::eExternalMemoryBufferCreateInfo: return "ExternalMemoryBufferCreateInfo";
   50103     case StructureType::eExternalMemoryImageCreateInfo: return "ExternalMemoryImageCreateInfo";
   50104     case StructureType::eExportMemoryAllocateInfo: return "ExportMemoryAllocateInfo";
   50105     case StructureType::ePhysicalDeviceExternalFenceInfo: return "PhysicalDeviceExternalFenceInfo";
   50106     case StructureType::eExternalFenceProperties: return "ExternalFenceProperties";
   50107     case StructureType::eExportFenceCreateInfo: return "ExportFenceCreateInfo";
   50108     case StructureType::eExportSemaphoreCreateInfo: return "ExportSemaphoreCreateInfo";
   50109     case StructureType::ePhysicalDeviceExternalSemaphoreInfo: return "PhysicalDeviceExternalSemaphoreInfo";
   50110     case StructureType::eExternalSemaphoreProperties: return "ExternalSemaphoreProperties";
   50111     case StructureType::ePhysicalDeviceMaintenance3Properties: return "PhysicalDeviceMaintenance3Properties";
   50112     case StructureType::eDescriptorSetLayoutSupport: return "DescriptorSetLayoutSupport";
   50113     case StructureType::ePhysicalDeviceShaderDrawParameterFeatures: return "PhysicalDeviceShaderDrawParameterFeatures";
   50114     case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
   50115     case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
   50116     case StructureType::eDeviceGroupPresentCapabilitiesKHR: return "DeviceGroupPresentCapabilitiesKHR";
   50117     case StructureType::eImageSwapchainCreateInfoKHR: return "ImageSwapchainCreateInfoKHR";
   50118     case StructureType::eBindImageMemorySwapchainInfoKHR: return "BindImageMemorySwapchainInfoKHR";
   50119     case StructureType::eAcquireNextImageInfoKHR: return "AcquireNextImageInfoKHR";
   50120     case StructureType::eDeviceGroupPresentInfoKHR: return "DeviceGroupPresentInfoKHR";
   50121     case StructureType::eDeviceGroupSwapchainCreateInfoKHR: return "DeviceGroupSwapchainCreateInfoKHR";
   50122     case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
   50123     case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
   50124     case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
   50125     case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
   50126     case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
   50127     case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
   50128     case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
   50129     case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
   50130     case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
   50131     case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
   50132     case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
   50133     case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
   50134     case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
   50135     case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
   50136     case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
   50137     case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
   50138     case StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT: return "PhysicalDeviceTransformFeedbackFeaturesEXT";
   50139     case StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT: return "PhysicalDeviceTransformFeedbackPropertiesEXT";
   50140     case StructureType::ePipelineRasterizationStateStreamCreateInfoEXT: return "PipelineRasterizationStateStreamCreateInfoEXT";
   50141     case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
   50142     case StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV: return "PhysicalDeviceCornerSampledImageFeaturesNV";
   50143     case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
   50144     case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
   50145     case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
   50146     case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
   50147     case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
   50148     case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
   50149     case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
   50150     case StructureType::eImageViewAstcDecodeModeEXT: return "ImageViewAstcDecodeModeEXT";
   50151     case StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT: return "PhysicalDeviceAstcDecodeFeaturesEXT";
   50152     case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
   50153     case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
   50154     case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
   50155     case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
   50156     case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
   50157     case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
   50158     case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
   50159     case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
   50160     case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
   50161     case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
   50162     case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
   50163     case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
   50164     case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
   50165     case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
   50166     case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
   50167     case StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT: return "CommandBufferInheritanceConditionalRenderingInfoEXT";
   50168     case StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT: return "PhysicalDeviceConditionalRenderingFeaturesEXT";
   50169     case StructureType::eConditionalRenderingBeginInfoEXT: return "ConditionalRenderingBeginInfoEXT";
   50170     case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
   50171     case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
   50172     case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
   50173     case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
   50174     case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
   50175     case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
   50176     case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
   50177     case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
   50178     case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
   50179     case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
   50180     case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
   50181     case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
   50182     case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
   50183     case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
   50184     case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
   50185     case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
   50186     case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
   50187     case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
   50188     case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT: return "PhysicalDeviceConservativeRasterizationPropertiesEXT";
   50189     case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT: return "PipelineRasterizationConservativeStateCreateInfoEXT";
   50190     case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
   50191     case StructureType::eAttachmentDescription2KHR: return "AttachmentDescription2KHR";
   50192     case StructureType::eAttachmentReference2KHR: return "AttachmentReference2KHR";
   50193     case StructureType::eSubpassDescription2KHR: return "SubpassDescription2KHR";
   50194     case StructureType::eSubpassDependency2KHR: return "SubpassDependency2KHR";
   50195     case StructureType::eRenderPassCreateInfo2KHR: return "RenderPassCreateInfo2KHR";
   50196     case StructureType::eSubpassBeginInfoKHR: return "SubpassBeginInfoKHR";
   50197     case StructureType::eSubpassEndInfoKHR: return "SubpassEndInfoKHR";
   50198     case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
   50199     case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
   50200     case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
   50201     case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
   50202     case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
   50203     case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
   50204     case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
   50205     case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
   50206     case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
   50207     case StructureType::eDisplayProperties2KHR: return "DisplayProperties2KHR";
   50208     case StructureType::eDisplayPlaneProperties2KHR: return "DisplayPlaneProperties2KHR";
   50209     case StructureType::eDisplayModeProperties2KHR: return "DisplayModeProperties2KHR";
   50210     case StructureType::eDisplayPlaneInfo2KHR: return "DisplayPlaneInfo2KHR";
   50211     case StructureType::eDisplayPlaneCapabilities2KHR: return "DisplayPlaneCapabilities2KHR";
   50212     case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
   50213     case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
   50214     case StructureType::eDebugUtilsObjectNameInfoEXT: return "DebugUtilsObjectNameInfoEXT";
   50215     case StructureType::eDebugUtilsObjectTagInfoEXT: return "DebugUtilsObjectTagInfoEXT";
   50216     case StructureType::eDebugUtilsLabelEXT: return "DebugUtilsLabelEXT";
   50217     case StructureType::eDebugUtilsMessengerCallbackDataEXT: return "DebugUtilsMessengerCallbackDataEXT";
   50218     case StructureType::eDebugUtilsMessengerCreateInfoEXT: return "DebugUtilsMessengerCreateInfoEXT";
   50219     case StructureType::eAndroidHardwareBufferUsageANDROID: return "AndroidHardwareBufferUsageANDROID";
   50220     case StructureType::eAndroidHardwareBufferPropertiesANDROID: return "AndroidHardwareBufferPropertiesANDROID";
   50221     case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID: return "AndroidHardwareBufferFormatPropertiesANDROID";
   50222     case StructureType::eImportAndroidHardwareBufferInfoANDROID: return "ImportAndroidHardwareBufferInfoANDROID";
   50223     case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID: return "MemoryGetAndroidHardwareBufferInfoANDROID";
   50224     case StructureType::eExternalFormatANDROID: return "ExternalFormatANDROID";
   50225     case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
   50226     case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
   50227     case StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT: return "PhysicalDeviceInlineUniformBlockFeaturesEXT";
   50228     case StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT: return "PhysicalDeviceInlineUniformBlockPropertiesEXT";
   50229     case StructureType::eWriteDescriptorSetInlineUniformBlockEXT: return "WriteDescriptorSetInlineUniformBlockEXT";
   50230     case StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT: return "DescriptorPoolInlineUniformBlockCreateInfoEXT";
   50231     case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
   50232     case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
   50233     case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
   50234     case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
   50235     case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
   50236     case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
   50237     case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
   50238     case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
   50239     case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
   50240     case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
   50241     case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
   50242     case StructureType::eDrmFormatModifierPropertiesListEXT: return "DrmFormatModifierPropertiesListEXT";
   50243     case StructureType::eDrmFormatModifierPropertiesEXT: return "DrmFormatModifierPropertiesEXT";
   50244     case StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT: return "PhysicalDeviceImageDrmFormatModifierInfoEXT";
   50245     case StructureType::eImageDrmFormatModifierListCreateInfoEXT: return "ImageDrmFormatModifierListCreateInfoEXT";
   50246     case StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT: return "ImageDrmFormatModifierExplicitCreateInfoEXT";
   50247     case StructureType::eImageDrmFormatModifierPropertiesEXT: return "ImageDrmFormatModifierPropertiesEXT";
   50248     case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
   50249     case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
   50250     case StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT: return "DescriptorSetLayoutBindingFlagsCreateInfoEXT";
   50251     case StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT: return "PhysicalDeviceDescriptorIndexingFeaturesEXT";
   50252     case StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT: return "PhysicalDeviceDescriptorIndexingPropertiesEXT";
   50253     case StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT: return "DescriptorSetVariableDescriptorCountAllocateInfoEXT";
   50254     case StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT: return "DescriptorSetVariableDescriptorCountLayoutSupportEXT";
   50255     case StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV: return "PipelineViewportShadingRateImageStateCreateInfoNV";
   50256     case StructureType::ePhysicalDeviceShadingRateImageFeaturesNV: return "PhysicalDeviceShadingRateImageFeaturesNV";
   50257     case StructureType::ePhysicalDeviceShadingRateImagePropertiesNV: return "PhysicalDeviceShadingRateImagePropertiesNV";
   50258     case StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV: return "PipelineViewportCoarseSampleOrderStateCreateInfoNV";
   50259     case StructureType::eRayTracingPipelineCreateInfoNV: return "RayTracingPipelineCreateInfoNV";
   50260     case StructureType::eAccelerationStructureCreateInfoNV: return "AccelerationStructureCreateInfoNV";
   50261     case StructureType::eGeometryNV: return "GeometryNV";
   50262     case StructureType::eGeometryTrianglesNV: return "GeometryTrianglesNV";
   50263     case StructureType::eGeometryAabbNV: return "GeometryAabbNV";
   50264     case StructureType::eBindAccelerationStructureMemoryInfoNV: return "BindAccelerationStructureMemoryInfoNV";
   50265     case StructureType::eWriteDescriptorSetAccelerationStructureNV: return "WriteDescriptorSetAccelerationStructureNV";
   50266     case StructureType::eAccelerationStructureMemoryRequirementsInfoNV: return "AccelerationStructureMemoryRequirementsInfoNV";
   50267     case StructureType::ePhysicalDeviceRayTracingPropertiesNV: return "PhysicalDeviceRayTracingPropertiesNV";
   50268     case StructureType::eRayTracingShaderGroupCreateInfoNV: return "RayTracingShaderGroupCreateInfoNV";
   50269     case StructureType::eAccelerationStructureInfoNV: return "AccelerationStructureInfoNV";
   50270     case StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV: return "PhysicalDeviceRepresentativeFragmentTestFeaturesNV";
   50271     case StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV: return "PipelineRepresentativeFragmentTestStateCreateInfoNV";
   50272     case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT: return "DeviceQueueGlobalPriorityCreateInfoEXT";
   50273     case StructureType::ePhysicalDevice8BitStorageFeaturesKHR: return "PhysicalDevice8BitStorageFeaturesKHR";
   50274     case StructureType::eImportMemoryHostPointerInfoEXT: return "ImportMemoryHostPointerInfoEXT";
   50275     case StructureType::eMemoryHostPointerPropertiesEXT: return "MemoryHostPointerPropertiesEXT";
   50276     case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT: return "PhysicalDeviceExternalMemoryHostPropertiesEXT";
   50277     case StructureType::ePhysicalDeviceShaderAtomicInt64FeaturesKHR: return "PhysicalDeviceShaderAtomicInt64FeaturesKHR";
   50278     case StructureType::eCalibratedTimestampInfoEXT: return "CalibratedTimestampInfoEXT";
   50279     case StructureType::ePhysicalDeviceShaderCorePropertiesAMD: return "PhysicalDeviceShaderCorePropertiesAMD";
   50280     case StructureType::eDeviceMemoryOverallocationCreateInfoAMD: return "DeviceMemoryOverallocationCreateInfoAMD";
   50281     case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT: return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT";
   50282     case StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT: return "PipelineVertexInputDivisorStateCreateInfoEXT";
   50283     case StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT: return "PhysicalDeviceVertexAttributeDivisorFeaturesEXT";
   50284     case StructureType::ePhysicalDeviceDriverPropertiesKHR: return "PhysicalDeviceDriverPropertiesKHR";
   50285     case StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV: return "PhysicalDeviceComputeShaderDerivativesFeaturesNV";
   50286     case StructureType::ePhysicalDeviceMeshShaderFeaturesNV: return "PhysicalDeviceMeshShaderFeaturesNV";
   50287     case StructureType::ePhysicalDeviceMeshShaderPropertiesNV: return "PhysicalDeviceMeshShaderPropertiesNV";
   50288     case StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV: return "PhysicalDeviceFragmentShaderBarycentricFeaturesNV";
   50289     case StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV: return "PhysicalDeviceShaderImageFootprintFeaturesNV";
   50290     case StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV: return "PipelineViewportExclusiveScissorStateCreateInfoNV";
   50291     case StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV: return "PhysicalDeviceExclusiveScissorFeaturesNV";
   50292     case StructureType::eCheckpointDataNV: return "CheckpointDataNV";
   50293     case StructureType::eQueueFamilyCheckpointPropertiesNV: return "QueueFamilyCheckpointPropertiesNV";
   50294     case StructureType::ePhysicalDeviceVulkanMemoryModelFeaturesKHR: return "PhysicalDeviceVulkanMemoryModelFeaturesKHR";
   50295     case StructureType::ePhysicalDevicePciBusInfoPropertiesEXT: return "PhysicalDevicePciBusInfoPropertiesEXT";
   50296     case StructureType::eImagepipeSurfaceCreateInfoFUCHSIA: return "ImagepipeSurfaceCreateInfoFUCHSIA";
   50297     default: return "invalid";
   50298     }
   50299   }
   50300 
   50301   VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
   50302   {
   50303     switch (value)
   50304     {
   50305     case SubpassContents::eInline: return "Inline";
   50306     case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
   50307     default: return "invalid";
   50308     }
   50309   }
   50310 
   50311   VULKAN_HPP_INLINE std::string to_string(DynamicState value)
   50312   {
   50313     switch (value)
   50314     {
   50315     case DynamicState::eViewport: return "Viewport";
   50316     case DynamicState::eScissor: return "Scissor";
   50317     case DynamicState::eLineWidth: return "LineWidth";
   50318     case DynamicState::eDepthBias: return "DepthBias";
   50319     case DynamicState::eBlendConstants: return "BlendConstants";
   50320     case DynamicState::eDepthBounds: return "DepthBounds";
   50321     case DynamicState::eStencilCompareMask: return "StencilCompareMask";
   50322     case DynamicState::eStencilWriteMask: return "StencilWriteMask";
   50323     case DynamicState::eStencilReference: return "StencilReference";
   50324     case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
   50325     case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
   50326     case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
   50327     case DynamicState::eViewportShadingRatePaletteNV: return "ViewportShadingRatePaletteNV";
   50328     case DynamicState::eViewportCoarseSampleOrderNV: return "ViewportCoarseSampleOrderNV";
   50329     case DynamicState::eExclusiveScissorNV: return "ExclusiveScissorNV";
   50330     default: return "invalid";
   50331     }
   50332   }
   50333 
   50334   VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateType value)
   50335   {
   50336     switch (value)
   50337     {
   50338     case DescriptorUpdateTemplateType::eDescriptorSet: return "DescriptorSet";
   50339     case DescriptorUpdateTemplateType::ePushDescriptorsKHR: return "PushDescriptorsKHR";
   50340     default: return "invalid";
   50341     }
   50342   }
   50343 
   50344   VULKAN_HPP_INLINE std::string to_string(ObjectType value)
   50345   {
   50346     switch (value)
   50347     {
   50348     case ObjectType::eUnknown: return "Unknown";
   50349     case ObjectType::eInstance: return "Instance";
   50350     case ObjectType::ePhysicalDevice: return "PhysicalDevice";
   50351     case ObjectType::eDevice: return "Device";
   50352     case ObjectType::eQueue: return "Queue";
   50353     case ObjectType::eSemaphore: return "Semaphore";
   50354     case ObjectType::eCommandBuffer: return "CommandBuffer";
   50355     case ObjectType::eFence: return "Fence";
   50356     case ObjectType::eDeviceMemory: return "DeviceMemory";
   50357     case ObjectType::eBuffer: return "Buffer";
   50358     case ObjectType::eImage: return "Image";
   50359     case ObjectType::eEvent: return "Event";
   50360     case ObjectType::eQueryPool: return "QueryPool";
   50361     case ObjectType::eBufferView: return "BufferView";
   50362     case ObjectType::eImageView: return "ImageView";
   50363     case ObjectType::eShaderModule: return "ShaderModule";
   50364     case ObjectType::ePipelineCache: return "PipelineCache";
   50365     case ObjectType::ePipelineLayout: return "PipelineLayout";
   50366     case ObjectType::eRenderPass: return "RenderPass";
   50367     case ObjectType::ePipeline: return "Pipeline";
   50368     case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
   50369     case ObjectType::eSampler: return "Sampler";
   50370     case ObjectType::eDescriptorPool: return "DescriptorPool";
   50371     case ObjectType::eDescriptorSet: return "DescriptorSet";
   50372     case ObjectType::eFramebuffer: return "Framebuffer";
   50373     case ObjectType::eCommandPool: return "CommandPool";
   50374     case ObjectType::eSamplerYcbcrConversion: return "SamplerYcbcrConversion";
   50375     case ObjectType::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate";
   50376     case ObjectType::eSurfaceKHR: return "SurfaceKHR";
   50377     case ObjectType::eSwapchainKHR: return "SwapchainKHR";
   50378     case ObjectType::eDisplayKHR: return "DisplayKHR";
   50379     case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
   50380     case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
   50381     case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
   50382     case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
   50383     case ObjectType::eDebugUtilsMessengerEXT: return "DebugUtilsMessengerEXT";
   50384     case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
   50385     case ObjectType::eAccelerationStructureNV: return "AccelerationStructureNV";
   50386     default: return "invalid";
   50387     }
   50388   }
   50389 
   50390   VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
   50391   {
   50392     switch (value)
   50393     {
   50394     case QueueFlagBits::eGraphics: return "Graphics";
   50395     case QueueFlagBits::eCompute: return "Compute";
   50396     case QueueFlagBits::eTransfer: return "Transfer";
   50397     case QueueFlagBits::eSparseBinding: return "SparseBinding";
   50398     case QueueFlagBits::eProtected: return "Protected";
   50399     default: return "invalid";
   50400     }
   50401   }
   50402 
   50403   VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
   50404   {
   50405     if (!value) return "{}";
   50406     std::string result;
   50407     if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
   50408     if (value & QueueFlagBits::eCompute) result += "Compute | ";
   50409     if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
   50410     if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
   50411     if (value & QueueFlagBits::eProtected) result += "Protected | ";
   50412     return "{" + result.substr(0, result.size() - 3) + "}";
   50413   }
   50414 
   50415   VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits value)
   50416   {
   50417     switch (value)
   50418     {
   50419     case DeviceQueueCreateFlagBits::eProtected: return "Protected";
   50420     default: return "invalid";
   50421     }
   50422   }
   50423 
   50424   VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags value)
   50425   {
   50426     if (!value) return "{}";
   50427     std::string result;
   50428     if (value & DeviceQueueCreateFlagBits::eProtected) result += "Protected | ";
   50429     return "{" + result.substr(0, result.size() - 3) + "}";
   50430   }
   50431 
   50432   VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
   50433   {
   50434     switch (value)
   50435     {
   50436     case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
   50437     case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
   50438     case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
   50439     case MemoryPropertyFlagBits::eHostCached: return "HostCached";
   50440     case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
   50441     case MemoryPropertyFlagBits::eProtected: return "Protected";
   50442     default: return "invalid";
   50443     }
   50444   }
   50445 
   50446   VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
   50447   {
   50448     if (!value) return "{}";
   50449     std::string result;
   50450     if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
   50451     if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
   50452     if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
   50453     if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
   50454     if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
   50455     if (value & MemoryPropertyFlagBits::eProtected) result += "Protected | ";
   50456     return "{" + result.substr(0, result.size() - 3) + "}";
   50457   }
   50458 
   50459   VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
   50460   {
   50461     switch (value)
   50462     {
   50463     case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
   50464     case MemoryHeapFlagBits::eMultiInstance: return "MultiInstance";
   50465     default: return "invalid";
   50466     }
   50467   }
   50468 
   50469   VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
   50470   {
   50471     if (!value) return "{}";
   50472     std::string result;
   50473     if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
   50474     if (value & MemoryHeapFlagBits::eMultiInstance) result += "MultiInstance | ";
   50475     return "{" + result.substr(0, result.size() - 3) + "}";
   50476   }
   50477 
   50478   VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
   50479   {
   50480     switch (value)
   50481     {
   50482     case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
   50483     case AccessFlagBits::eIndexRead: return "IndexRead";
   50484     case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
   50485     case AccessFlagBits::eUniformRead: return "UniformRead";
   50486     case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
   50487     case AccessFlagBits::eShaderRead: return "ShaderRead";
   50488     case AccessFlagBits::eShaderWrite: return "ShaderWrite";
   50489     case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
   50490     case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
   50491     case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
   50492     case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
   50493     case AccessFlagBits::eTransferRead: return "TransferRead";
   50494     case AccessFlagBits::eTransferWrite: return "TransferWrite";
   50495     case AccessFlagBits::eHostRead: return "HostRead";
   50496     case AccessFlagBits::eHostWrite: return "HostWrite";
   50497     case AccessFlagBits::eMemoryRead: return "MemoryRead";
   50498     case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
   50499     case AccessFlagBits::eTransformFeedbackWriteEXT: return "TransformFeedbackWriteEXT";
   50500     case AccessFlagBits::eTransformFeedbackCounterReadEXT: return "TransformFeedbackCounterReadEXT";
   50501     case AccessFlagBits::eTransformFeedbackCounterWriteEXT: return "TransformFeedbackCounterWriteEXT";
   50502     case AccessFlagBits::eConditionalRenderingReadEXT: return "ConditionalRenderingReadEXT";
   50503     case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
   50504     case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
   50505     case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
   50506     case AccessFlagBits::eShadingRateImageReadNV: return "ShadingRateImageReadNV";
   50507     case AccessFlagBits::eAccelerationStructureReadNV: return "AccelerationStructureReadNV";
   50508     case AccessFlagBits::eAccelerationStructureWriteNV: return "AccelerationStructureWriteNV";
   50509     default: return "invalid";
   50510     }
   50511   }
   50512 
   50513   VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
   50514   {
   50515     if (!value) return "{}";
   50516     std::string result;
   50517     if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
   50518     if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
   50519     if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
   50520     if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
   50521     if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
   50522     if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
   50523     if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
   50524     if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
   50525     if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
   50526     if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
   50527     if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
   50528     if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
   50529     if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
   50530     if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
   50531     if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
   50532     if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
   50533     if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
   50534     if (value & AccessFlagBits::eTransformFeedbackWriteEXT) result += "TransformFeedbackWriteEXT | ";
   50535     if (value & AccessFlagBits::eTransformFeedbackCounterReadEXT) result += "TransformFeedbackCounterReadEXT | ";
   50536     if (value & AccessFlagBits::eTransformFeedbackCounterWriteEXT) result += "TransformFeedbackCounterWriteEXT | ";
   50537     if (value & AccessFlagBits::eConditionalRenderingReadEXT) result += "ConditionalRenderingReadEXT | ";
   50538     if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
   50539     if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
   50540     if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
   50541     if (value & AccessFlagBits::eShadingRateImageReadNV) result += "ShadingRateImageReadNV | ";
   50542     if (value & AccessFlagBits::eAccelerationStructureReadNV) result += "AccelerationStructureReadNV | ";
   50543     if (value & AccessFlagBits::eAccelerationStructureWriteNV) result += "AccelerationStructureWriteNV | ";
   50544     return "{" + result.substr(0, result.size() - 3) + "}";
   50545   }
   50546 
   50547   VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
   50548   {
   50549     switch (value)
   50550     {
   50551     case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
   50552     case BufferUsageFlagBits::eTransferDst: return "TransferDst";
   50553     case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
   50554     case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
   50555     case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
   50556     case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
   50557     case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
   50558     case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
   50559     case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
   50560     case BufferUsageFlagBits::eTransformFeedbackBufferEXT: return "TransformFeedbackBufferEXT";
   50561     case BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT: return "TransformFeedbackCounterBufferEXT";
   50562     case BufferUsageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT";
   50563     case BufferUsageFlagBits::eRayTracingNV: return "RayTracingNV";
   50564     default: return "invalid";
   50565     }
   50566   }
   50567 
   50568   VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
   50569   {
   50570     if (!value) return "{}";
   50571     std::string result;
   50572     if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
   50573     if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
   50574     if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
   50575     if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
   50576     if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
   50577     if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
   50578     if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
   50579     if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
   50580     if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
   50581     if (value & BufferUsageFlagBits::eTransformFeedbackBufferEXT) result += "TransformFeedbackBufferEXT | ";
   50582     if (value & BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT) result += "TransformFeedbackCounterBufferEXT | ";
   50583     if (value & BufferUsageFlagBits::eConditionalRenderingEXT) result += "ConditionalRenderingEXT | ";
   50584     if (value & BufferUsageFlagBits::eRayTracingNV) result += "RayTracingNV | ";
   50585     return "{" + result.substr(0, result.size() - 3) + "}";
   50586   }
   50587 
   50588   VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
   50589   {
   50590     switch (value)
   50591     {
   50592     case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
   50593     case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
   50594     case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
   50595     case BufferCreateFlagBits::eProtected: return "Protected";
   50596     default: return "invalid";
   50597     }
   50598   }
   50599 
   50600   VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
   50601   {
   50602     if (!value) return "{}";
   50603     std::string result;
   50604     if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
   50605     if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
   50606     if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
   50607     if (value & BufferCreateFlagBits::eProtected) result += "Protected | ";
   50608     return "{" + result.substr(0, result.size() - 3) + "}";
   50609   }
   50610 
   50611   VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
   50612   {
   50613     switch (value)
   50614     {
   50615     case ShaderStageFlagBits::eVertex: return "Vertex";
   50616     case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
   50617     case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
   50618     case ShaderStageFlagBits::eGeometry: return "Geometry";
   50619     case ShaderStageFlagBits::eFragment: return "Fragment";
   50620     case ShaderStageFlagBits::eCompute: return "Compute";
   50621     case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
   50622     case ShaderStageFlagBits::eAll: return "All";
   50623     case ShaderStageFlagBits::eRaygenNV: return "RaygenNV";
   50624     case ShaderStageFlagBits::eAnyHitNV: return "AnyHitNV";
   50625     case ShaderStageFlagBits::eClosestHitNV: return "ClosestHitNV";
   50626     case ShaderStageFlagBits::eMissNV: return "MissNV";
   50627     case ShaderStageFlagBits::eIntersectionNV: return "IntersectionNV";
   50628     case ShaderStageFlagBits::eCallableNV: return "CallableNV";
   50629     case ShaderStageFlagBits::eTaskNV: return "TaskNV";
   50630     case ShaderStageFlagBits::eMeshNV: return "MeshNV";
   50631     default: return "invalid";
   50632     }
   50633   }
   50634 
   50635   VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
   50636   {
   50637     if (!value) return "{}";
   50638     std::string result;
   50639     if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
   50640     if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
   50641     if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
   50642     if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
   50643     if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
   50644     if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
   50645     if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
   50646     if (value & ShaderStageFlagBits::eAll) result += "All | ";
   50647     if (value & ShaderStageFlagBits::eRaygenNV) result += "RaygenNV | ";
   50648     if (value & ShaderStageFlagBits::eAnyHitNV) result += "AnyHitNV | ";
   50649     if (value & ShaderStageFlagBits::eClosestHitNV) result += "ClosestHitNV | ";
   50650     if (value & ShaderStageFlagBits::eMissNV) result += "MissNV | ";
   50651     if (value & ShaderStageFlagBits::eIntersectionNV) result += "IntersectionNV | ";
   50652     if (value & ShaderStageFlagBits::eCallableNV) result += "CallableNV | ";
   50653     if (value & ShaderStageFlagBits::eTaskNV) result += "TaskNV | ";
   50654     if (value & ShaderStageFlagBits::eMeshNV) result += "MeshNV | ";
   50655     return "{" + result.substr(0, result.size() - 3) + "}";
   50656   }
   50657 
   50658   VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
   50659   {
   50660     switch (value)
   50661     {
   50662     case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
   50663     case ImageUsageFlagBits::eTransferDst: return "TransferDst";
   50664     case ImageUsageFlagBits::eSampled: return "Sampled";
   50665     case ImageUsageFlagBits::eStorage: return "Storage";
   50666     case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
   50667     case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
   50668     case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
   50669     case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
   50670     case ImageUsageFlagBits::eShadingRateImageNV: return "ShadingRateImageNV";
   50671     default: return "invalid";
   50672     }
   50673   }
   50674 
   50675   VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
   50676   {
   50677     if (!value) return "{}";
   50678     std::string result;
   50679     if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
   50680     if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
   50681     if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
   50682     if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
   50683     if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
   50684     if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
   50685     if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
   50686     if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
   50687     if (value & ImageUsageFlagBits::eShadingRateImageNV) result += "ShadingRateImageNV | ";
   50688     return "{" + result.substr(0, result.size() - 3) + "}";
   50689   }
   50690 
   50691   VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
   50692   {
   50693     switch (value)
   50694     {
   50695     case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
   50696     case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
   50697     case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
   50698     case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
   50699     case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
   50700     case ImageCreateFlagBits::eAlias: return "Alias";
   50701     case ImageCreateFlagBits::eSplitInstanceBindRegions: return "SplitInstanceBindRegions";
   50702     case ImageCreateFlagBits::e2DArrayCompatible: return "2DArrayCompatible";
   50703     case ImageCreateFlagBits::eBlockTexelViewCompatible: return "BlockTexelViewCompatible";
   50704     case ImageCreateFlagBits::eExtendedUsage: return "ExtendedUsage";
   50705     case ImageCreateFlagBits::eProtected: return "Protected";
   50706     case ImageCreateFlagBits::eDisjoint: return "Disjoint";
   50707     case ImageCreateFlagBits::eCornerSampledNV: return "CornerSampledNV";
   50708     case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
   50709     default: return "invalid";
   50710     }
   50711   }
   50712 
   50713   VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
   50714   {
   50715     if (!value) return "{}";
   50716     std::string result;
   50717     if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
   50718     if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
   50719     if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
   50720     if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
   50721     if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
   50722     if (value & ImageCreateFlagBits::eAlias) result += "Alias | ";
   50723     if (value & ImageCreateFlagBits::eSplitInstanceBindRegions) result += "SplitInstanceBindRegions | ";
   50724     if (value & ImageCreateFlagBits::e2DArrayCompatible) result += "2DArrayCompatible | ";
   50725     if (value & ImageCreateFlagBits::eBlockTexelViewCompatible) result += "BlockTexelViewCompatible | ";
   50726     if (value & ImageCreateFlagBits::eExtendedUsage) result += "ExtendedUsage | ";
   50727     if (value & ImageCreateFlagBits::eProtected) result += "Protected | ";
   50728     if (value & ImageCreateFlagBits::eDisjoint) result += "Disjoint | ";
   50729     if (value & ImageCreateFlagBits::eCornerSampledNV) result += "CornerSampledNV | ";
   50730     if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
   50731     return "{" + result.substr(0, result.size() - 3) + "}";
   50732   }
   50733 
   50734   VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
   50735   {
   50736     switch (value)
   50737     {
   50738     case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
   50739     case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
   50740     case PipelineCreateFlagBits::eDerivative: return "Derivative";
   50741     case PipelineCreateFlagBits::eViewIndexFromDeviceIndex: return "ViewIndexFromDeviceIndex";
   50742     case PipelineCreateFlagBits::eDispatchBase: return "DispatchBase";
   50743     case PipelineCreateFlagBits::eDeferCompileNV: return "DeferCompileNV";
   50744     default: return "invalid";
   50745     }
   50746   }
   50747 
   50748   VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
   50749   {
   50750     if (!value) return "{}";
   50751     std::string result;
   50752     if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
   50753     if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
   50754     if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
   50755     if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex) result += "ViewIndexFromDeviceIndex | ";
   50756     if (value & PipelineCreateFlagBits::eDispatchBase) result += "DispatchBase | ";
   50757     if (value & PipelineCreateFlagBits::eDeferCompileNV) result += "DeferCompileNV | ";
   50758     return "{" + result.substr(0, result.size() - 3) + "}";
   50759   }
   50760 
   50761   VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
   50762   {
   50763     switch (value)
   50764     {
   50765     case ColorComponentFlagBits::eR: return "R";
   50766     case ColorComponentFlagBits::eG: return "G";
   50767     case ColorComponentFlagBits::eB: return "B";
   50768     case ColorComponentFlagBits::eA: return "A";
   50769     default: return "invalid";
   50770     }
   50771   }
   50772 
   50773   VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
   50774   {
   50775     if (!value) return "{}";
   50776     std::string result;
   50777     if (value & ColorComponentFlagBits::eR) result += "R | ";
   50778     if (value & ColorComponentFlagBits::eG) result += "G | ";
   50779     if (value & ColorComponentFlagBits::eB) result += "B | ";
   50780     if (value & ColorComponentFlagBits::eA) result += "A | ";
   50781     return "{" + result.substr(0, result.size() - 3) + "}";
   50782   }
   50783 
   50784   VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
   50785   {
   50786     switch (value)
   50787     {
   50788     case FenceCreateFlagBits::eSignaled: return "Signaled";
   50789     default: return "invalid";
   50790     }
   50791   }
   50792 
   50793   VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
   50794   {
   50795     if (!value) return "{}";
   50796     std::string result;
   50797     if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
   50798     return "{" + result.substr(0, result.size() - 3) + "}";
   50799   }
   50800 
   50801   VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
   50802   {
   50803     switch (value)
   50804     {
   50805     case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
   50806     case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
   50807     case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
   50808     case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
   50809     case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
   50810     case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
   50811     case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
   50812     case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
   50813     case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
   50814     case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
   50815     case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
   50816     case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
   50817     case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
   50818     case FormatFeatureFlagBits::eTransferSrc: return "TransferSrc";
   50819     case FormatFeatureFlagBits::eTransferDst: return "TransferDst";
   50820     case FormatFeatureFlagBits::eMidpointChromaSamples: return "MidpointChromaSamples";
   50821     case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter: return "SampledImageYcbcrConversionLinearFilter";
   50822     case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter: return "SampledImageYcbcrConversionSeparateReconstructionFilter";
   50823     case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit: return "SampledImageYcbcrConversionChromaReconstructionExplicit";
   50824     case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable";
   50825     case FormatFeatureFlagBits::eDisjoint: return "Disjoint";
   50826     case FormatFeatureFlagBits::eCositedChromaSamples: return "CositedChromaSamples";
   50827     case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
   50828     case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
   50829     default: return "invalid";
   50830     }
   50831   }
   50832 
   50833   VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
   50834   {
   50835     if (!value) return "{}";
   50836     std::string result;
   50837     if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
   50838     if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
   50839     if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
   50840     if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
   50841     if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
   50842     if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
   50843     if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
   50844     if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
   50845     if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
   50846     if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
   50847     if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
   50848     if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
   50849     if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
   50850     if (value & FormatFeatureFlagBits::eTransferSrc) result += "TransferSrc | ";
   50851     if (value & FormatFeatureFlagBits::eTransferDst) result += "TransferDst | ";
   50852     if (value & FormatFeatureFlagBits::eMidpointChromaSamples) result += "MidpointChromaSamples | ";
   50853     if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter) result += "SampledImageYcbcrConversionLinearFilter | ";
   50854     if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter) result += "SampledImageYcbcrConversionSeparateReconstructionFilter | ";
   50855     if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit) result += "SampledImageYcbcrConversionChromaReconstructionExplicit | ";
   50856     if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceable | ";
   50857     if (value & FormatFeatureFlagBits::eDisjoint) result += "Disjoint | ";
   50858     if (value & FormatFeatureFlagBits::eCositedChromaSamples) result += "CositedChromaSamples | ";
   50859     if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
   50860     if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
   50861     return "{" + result.substr(0, result.size() - 3) + "}";
   50862   }
   50863 
   50864   VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
   50865   {
   50866     switch (value)
   50867     {
   50868     case QueryControlFlagBits::ePrecise: return "Precise";
   50869     default: return "invalid";
   50870     }
   50871   }
   50872 
   50873   VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
   50874   {
   50875     if (!value) return "{}";
   50876     std::string result;
   50877     if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
   50878     return "{" + result.substr(0, result.size() - 3) + "}";
   50879   }
   50880 
   50881   VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
   50882   {
   50883     switch (value)
   50884     {
   50885     case QueryResultFlagBits::e64: return "64";
   50886     case QueryResultFlagBits::eWait: return "Wait";
   50887     case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
   50888     case QueryResultFlagBits::ePartial: return "Partial";
   50889     default: return "invalid";
   50890     }
   50891   }
   50892 
   50893   VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
   50894   {
   50895     if (!value) return "{}";
   50896     std::string result;
   50897     if (value & QueryResultFlagBits::e64) result += "64 | ";
   50898     if (value & QueryResultFlagBits::eWait) result += "Wait | ";
   50899     if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
   50900     if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
   50901     return "{" + result.substr(0, result.size() - 3) + "}";
   50902   }
   50903 
   50904   VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
   50905   {
   50906     switch (value)
   50907     {
   50908     case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
   50909     case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
   50910     case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
   50911     default: return "invalid";
   50912     }
   50913   }
   50914 
   50915   VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
   50916   {
   50917     if (!value) return "{}";
   50918     std::string result;
   50919     if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
   50920     if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
   50921     if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
   50922     return "{" + result.substr(0, result.size() - 3) + "}";
   50923   }
   50924 
   50925   VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
   50926   {
   50927     switch (value)
   50928     {
   50929     case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
   50930     case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
   50931     case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
   50932     case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
   50933     case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
   50934     case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
   50935     case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
   50936     case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
   50937     case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
   50938     case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
   50939     case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
   50940     default: return "invalid";
   50941     }
   50942   }
   50943 
   50944   VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
   50945   {
   50946     if (!value) return "{}";
   50947     std::string result;
   50948     if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
   50949     if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
   50950     if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
   50951     if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
   50952     if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
   50953     if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
   50954     if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
   50955     if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
   50956     if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
   50957     if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
   50958     if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
   50959     return "{" + result.substr(0, result.size() - 3) + "}";
   50960   }
   50961 
   50962   VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
   50963   {
   50964     switch (value)
   50965     {
   50966     case ImageAspectFlagBits::eColor: return "Color";
   50967     case ImageAspectFlagBits::eDepth: return "Depth";
   50968     case ImageAspectFlagBits::eStencil: return "Stencil";
   50969     case ImageAspectFlagBits::eMetadata: return "Metadata";
   50970     case ImageAspectFlagBits::ePlane0: return "Plane0";
   50971     case ImageAspectFlagBits::ePlane1: return "Plane1";
   50972     case ImageAspectFlagBits::ePlane2: return "Plane2";
   50973     case ImageAspectFlagBits::eMemoryPlane0EXT: return "MemoryPlane0EXT";
   50974     case ImageAspectFlagBits::eMemoryPlane1EXT: return "MemoryPlane1EXT";
   50975     case ImageAspectFlagBits::eMemoryPlane2EXT: return "MemoryPlane2EXT";
   50976     case ImageAspectFlagBits::eMemoryPlane3EXT: return "MemoryPlane3EXT";
   50977     default: return "invalid";
   50978     }
   50979   }
   50980 
   50981   VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
   50982   {
   50983     if (!value) return "{}";
   50984     std::string result;
   50985     if (value & ImageAspectFlagBits::eColor) result += "Color | ";
   50986     if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
   50987     if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
   50988     if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
   50989     if (value & ImageAspectFlagBits::ePlane0) result += "Plane0 | ";
   50990     if (value & ImageAspectFlagBits::ePlane1) result += "Plane1 | ";
   50991     if (value & ImageAspectFlagBits::ePlane2) result += "Plane2 | ";
   50992     if (value & ImageAspectFlagBits::eMemoryPlane0EXT) result += "MemoryPlane0EXT | ";
   50993     if (value & ImageAspectFlagBits::eMemoryPlane1EXT) result += "MemoryPlane1EXT | ";
   50994     if (value & ImageAspectFlagBits::eMemoryPlane2EXT) result += "MemoryPlane2EXT | ";
   50995     if (value & ImageAspectFlagBits::eMemoryPlane3EXT) result += "MemoryPlane3EXT | ";
   50996     return "{" + result.substr(0, result.size() - 3) + "}";
   50997   }
   50998 
   50999   VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
   51000   {
   51001     switch (value)
   51002     {
   51003     case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
   51004     case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
   51005     case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
   51006     default: return "invalid";
   51007     }
   51008   }
   51009 
   51010   VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
   51011   {
   51012     if (!value) return "{}";
   51013     std::string result;
   51014     if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
   51015     if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
   51016     if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
   51017     return "{" + result.substr(0, result.size() - 3) + "}";
   51018   }
   51019 
   51020   VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
   51021   {
   51022     switch (value)
   51023     {
   51024     case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
   51025     default: return "invalid";
   51026     }
   51027   }
   51028 
   51029   VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
   51030   {
   51031     if (!value) return "{}";
   51032     std::string result;
   51033     if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
   51034     return "{" + result.substr(0, result.size() - 3) + "}";
   51035   }
   51036 
   51037   VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
   51038   {
   51039     switch (value)
   51040     {
   51041     case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
   51042     case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
   51043     case PipelineStageFlagBits::eVertexInput: return "VertexInput";
   51044     case PipelineStageFlagBits::eVertexShader: return "VertexShader";
   51045     case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
   51046     case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
   51047     case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
   51048     case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
   51049     case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
   51050     case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
   51051     case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
   51052     case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
   51053     case PipelineStageFlagBits::eTransfer: return "Transfer";
   51054     case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
   51055     case PipelineStageFlagBits::eHost: return "Host";
   51056     case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
   51057     case PipelineStageFlagBits::eAllCommands: return "AllCommands";
   51058     case PipelineStageFlagBits::eTransformFeedbackEXT: return "TransformFeedbackEXT";
   51059     case PipelineStageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT";
   51060     case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
   51061     case PipelineStageFlagBits::eShadingRateImageNV: return "ShadingRateImageNV";
   51062     case PipelineStageFlagBits::eRayTracingShaderNV: return "RayTracingShaderNV";
   51063     case PipelineStageFlagBits::eAccelerationStructureBuildNV: return "AccelerationStructureBuildNV";
   51064     case PipelineStageFlagBits::eTaskShaderNV: return "TaskShaderNV";
   51065     case PipelineStageFlagBits::eMeshShaderNV: return "MeshShaderNV";
   51066     default: return "invalid";
   51067     }
   51068   }
   51069 
   51070   VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
   51071   {
   51072     if (!value) return "{}";
   51073     std::string result;
   51074     if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
   51075     if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
   51076     if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
   51077     if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
   51078     if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
   51079     if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
   51080     if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
   51081     if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
   51082     if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
   51083     if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
   51084     if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
   51085     if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
   51086     if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
   51087     if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
   51088     if (value & PipelineStageFlagBits::eHost) result += "Host | ";
   51089     if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
   51090     if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
   51091     if (value & PipelineStageFlagBits::eTransformFeedbackEXT) result += "TransformFeedbackEXT | ";
   51092     if (value & PipelineStageFlagBits::eConditionalRenderingEXT) result += "ConditionalRenderingEXT | ";
   51093     if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
   51094     if (value & PipelineStageFlagBits::eShadingRateImageNV) result += "ShadingRateImageNV | ";
   51095     if (value & PipelineStageFlagBits::eRayTracingShaderNV) result += "RayTracingShaderNV | ";
   51096     if (value & PipelineStageFlagBits::eAccelerationStructureBuildNV) result += "AccelerationStructureBuildNV | ";
   51097     if (value & PipelineStageFlagBits::eTaskShaderNV) result += "TaskShaderNV | ";
   51098     if (value & PipelineStageFlagBits::eMeshShaderNV) result += "MeshShaderNV | ";
   51099     return "{" + result.substr(0, result.size() - 3) + "}";
   51100   }
   51101 
   51102   VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
   51103   {
   51104     switch (value)
   51105     {
   51106     case CommandPoolCreateFlagBits::eTransient: return "Transient";
   51107     case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
   51108     case CommandPoolCreateFlagBits::eProtected: return "Protected";
   51109     default: return "invalid";
   51110     }
   51111   }
   51112 
   51113   VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
   51114   {
   51115     if (!value) return "{}";
   51116     std::string result;
   51117     if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
   51118     if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
   51119     if (value & CommandPoolCreateFlagBits::eProtected) result += "Protected | ";
   51120     return "{" + result.substr(0, result.size() - 3) + "}";
   51121   }
   51122 
   51123   VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
   51124   {
   51125     switch (value)
   51126     {
   51127     case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
   51128     default: return "invalid";
   51129     }
   51130   }
   51131 
   51132   VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
   51133   {
   51134     if (!value) return "{}";
   51135     std::string result;
   51136     if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
   51137     return "{" + result.substr(0, result.size() - 3) + "}";
   51138   }
   51139 
   51140   VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
   51141   {
   51142     switch (value)
   51143     {
   51144     case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
   51145     default: return "invalid";
   51146     }
   51147   }
   51148 
   51149   VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
   51150   {
   51151     if (!value) return "{}";
   51152     std::string result;
   51153     if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
   51154     return "{" + result.substr(0, result.size() - 3) + "}";
   51155   }
   51156 
   51157   VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
   51158   {
   51159     switch (value)
   51160     {
   51161     case SampleCountFlagBits::e1: return "1";
   51162     case SampleCountFlagBits::e2: return "2";
   51163     case SampleCountFlagBits::e4: return "4";
   51164     case SampleCountFlagBits::e8: return "8";
   51165     case SampleCountFlagBits::e16: return "16";
   51166     case SampleCountFlagBits::e32: return "32";
   51167     case SampleCountFlagBits::e64: return "64";
   51168     default: return "invalid";
   51169     }
   51170   }
   51171 
   51172   VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
   51173   {
   51174     if (!value) return "{}";
   51175     std::string result;
   51176     if (value & SampleCountFlagBits::e1) result += "1 | ";
   51177     if (value & SampleCountFlagBits::e2) result += "2 | ";
   51178     if (value & SampleCountFlagBits::e4) result += "4 | ";
   51179     if (value & SampleCountFlagBits::e8) result += "8 | ";
   51180     if (value & SampleCountFlagBits::e16) result += "16 | ";
   51181     if (value & SampleCountFlagBits::e32) result += "32 | ";
   51182     if (value & SampleCountFlagBits::e64) result += "64 | ";
   51183     return "{" + result.substr(0, result.size() - 3) + "}";
   51184   }
   51185 
   51186   VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
   51187   {
   51188     switch (value)
   51189     {
   51190     case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
   51191     default: return "invalid";
   51192     }
   51193   }
   51194 
   51195   VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
   51196   {
   51197     if (!value) return "{}";
   51198     std::string result;
   51199     if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
   51200     return "{" + result.substr(0, result.size() - 3) + "}";
   51201   }
   51202 
   51203   VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
   51204   {
   51205     switch (value)
   51206     {
   51207     case StencilFaceFlagBits::eFront: return "Front";
   51208     case StencilFaceFlagBits::eBack: return "Back";
   51209     case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
   51210     default: return "invalid";
   51211     }
   51212   }
   51213 
   51214   VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
   51215   {
   51216     if (!value) return "{}";
   51217     std::string result;
   51218     if (value & StencilFaceFlagBits::eFront) result += "Front | ";
   51219     if (value & StencilFaceFlagBits::eBack) result += "Back | ";
   51220     if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
   51221     return "{" + result.substr(0, result.size() - 3) + "}";
   51222   }
   51223 
   51224   VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
   51225   {
   51226     switch (value)
   51227     {
   51228     case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
   51229     case DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT: return "UpdateAfterBindEXT";
   51230     default: return "invalid";
   51231     }
   51232   }
   51233 
   51234   VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
   51235   {
   51236     if (!value) return "{}";
   51237     std::string result;
   51238     if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
   51239     if (value & DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT) result += "UpdateAfterBindEXT | ";
   51240     return "{" + result.substr(0, result.size() - 3) + "}";
   51241   }
   51242 
   51243   VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
   51244   {
   51245     switch (value)
   51246     {
   51247     case DependencyFlagBits::eByRegion: return "ByRegion";
   51248     case DependencyFlagBits::eDeviceGroup: return "DeviceGroup";
   51249     case DependencyFlagBits::eViewLocal: return "ViewLocal";
   51250     default: return "invalid";
   51251     }
   51252   }
   51253 
   51254   VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
   51255   {
   51256     if (!value) return "{}";
   51257     std::string result;
   51258     if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
   51259     if (value & DependencyFlagBits::eDeviceGroup) result += "DeviceGroup | ";
   51260     if (value & DependencyFlagBits::eViewLocal) result += "ViewLocal | ";
   51261     return "{" + result.substr(0, result.size() - 3) + "}";
   51262   }
   51263 
   51264   VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
   51265   {
   51266     switch (value)
   51267     {
   51268     case PresentModeKHR::eImmediate: return "Immediate";
   51269     case PresentModeKHR::eMailbox: return "Mailbox";
   51270     case PresentModeKHR::eFifo: return "Fifo";
   51271     case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
   51272     case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
   51273     case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
   51274     default: return "invalid";
   51275     }
   51276   }
   51277 
   51278   VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
   51279   {
   51280     switch (value)
   51281     {
   51282     case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
   51283     case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
   51284     case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
   51285     case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
   51286     case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
   51287     case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
   51288     case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
   51289     case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
   51290     case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
   51291     case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
   51292     case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
   51293     case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
   51294     case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
   51295     case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
   51296     case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
   51297     default: return "invalid";
   51298     }
   51299   }
   51300 
   51301   VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
   51302   {
   51303     switch (value)
   51304     {
   51305     case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
   51306     case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
   51307     case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
   51308     case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
   51309     default: return "invalid";
   51310     }
   51311   }
   51312 
   51313   VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
   51314   {
   51315     if (!value) return "{}";
   51316     std::string result;
   51317     if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
   51318     if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
   51319     if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
   51320     if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
   51321     return "{" + result.substr(0, result.size() - 3) + "}";
   51322   }
   51323 
   51324   VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
   51325   {
   51326     switch (value)
   51327     {
   51328     case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
   51329     case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
   51330     case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
   51331     case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
   51332     default: return "invalid";
   51333     }
   51334   }
   51335 
   51336   VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
   51337   {
   51338     if (!value) return "{}";
   51339     std::string result;
   51340     if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
   51341     if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
   51342     if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
   51343     if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
   51344     return "{" + result.substr(0, result.size() - 3) + "}";
   51345   }
   51346 
   51347   VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
   51348   {
   51349     switch (value)
   51350     {
   51351     case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
   51352     case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
   51353     case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
   51354     case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
   51355     case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
   51356     case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
   51357     case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
   51358     case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
   51359     case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
   51360     default: return "invalid";
   51361     }
   51362   }
   51363 
   51364   VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
   51365   {
   51366     if (!value) return "{}";
   51367     std::string result;
   51368     if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
   51369     if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
   51370     if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
   51371     if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
   51372     if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
   51373     if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
   51374     if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
   51375     if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
   51376     if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
   51377     return "{" + result.substr(0, result.size() - 3) + "}";
   51378   }
   51379 
   51380   VULKAN_HPP_INLINE std::string to_string(TimeDomainEXT value)
   51381   {
   51382     switch (value)
   51383     {
   51384     case TimeDomainEXT::eDevice: return "Device";
   51385     case TimeDomainEXT::eClockMonotonic: return "ClockMonotonic";
   51386     case TimeDomainEXT::eClockMonotonicRaw: return "ClockMonotonicRaw";
   51387     case TimeDomainEXT::eQueryPerformanceCounter: return "QueryPerformanceCounter";
   51388     default: return "invalid";
   51389     }
   51390   }
   51391 
   51392   VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
   51393   {
   51394     switch (value)
   51395     {
   51396     case DebugReportFlagBitsEXT::eInformation: return "Information";
   51397     case DebugReportFlagBitsEXT::eWarning: return "Warning";
   51398     case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
   51399     case DebugReportFlagBitsEXT::eError: return "Error";
   51400     case DebugReportFlagBitsEXT::eDebug: return "Debug";
   51401     default: return "invalid";
   51402     }
   51403   }
   51404 
   51405   VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
   51406   {
   51407     if (!value) return "{}";
   51408     std::string result;
   51409     if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
   51410     if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
   51411     if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
   51412     if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
   51413     if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
   51414     return "{" + result.substr(0, result.size() - 3) + "}";
   51415   }
   51416 
   51417   VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
   51418   {
   51419     switch (value)
   51420     {
   51421     case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
   51422     case DebugReportObjectTypeEXT::eInstance: return "Instance";
   51423     case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
   51424     case DebugReportObjectTypeEXT::eDevice: return "Device";
   51425     case DebugReportObjectTypeEXT::eQueue: return "Queue";
   51426     case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
   51427     case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
   51428     case DebugReportObjectTypeEXT::eFence: return "Fence";
   51429     case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
   51430     case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
   51431     case DebugReportObjectTypeEXT::eImage: return "Image";
   51432     case DebugReportObjectTypeEXT::eEvent: return "Event";
   51433     case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
   51434     case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
   51435     case DebugReportObjectTypeEXT::eImageView: return "ImageView";
   51436     case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
   51437     case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
   51438     case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
   51439     case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
   51440     case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
   51441     case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
   51442     case DebugReportObjectTypeEXT::eSampler: return "Sampler";
   51443     case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
   51444     case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
   51445     case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
   51446     case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
   51447     case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
   51448     case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
   51449     case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
   51450     case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
   51451     case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
   51452     case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
   51453     case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
   51454     case DebugReportObjectTypeEXT::eValidationCacheExt: return "ValidationCacheExt";
   51455     case DebugReportObjectTypeEXT::eSamplerYcbcrConversion: return "SamplerYcbcrConversion";
   51456     case DebugReportObjectTypeEXT::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate";
   51457     case DebugReportObjectTypeEXT::eAccelerationStructureNV: return "AccelerationStructureNV";
   51458     default: return "invalid";
   51459     }
   51460   }
   51461 
   51462   VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
   51463   {
   51464     switch (value)
   51465     {
   51466     case RasterizationOrderAMD::eStrict: return "Strict";
   51467     case RasterizationOrderAMD::eRelaxed: return "Relaxed";
   51468     default: return "invalid";
   51469     }
   51470   }
   51471 
   51472   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
   51473   {
   51474     switch (value)
   51475     {
   51476     case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
   51477     case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
   51478     case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
   51479     case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
   51480     default: return "invalid";
   51481     }
   51482   }
   51483 
   51484   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
   51485   {
   51486     if (!value) return "{}";
   51487     std::string result;
   51488     if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
   51489     if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
   51490     if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
   51491     if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
   51492     return "{" + result.substr(0, result.size() - 3) + "}";
   51493   }
   51494 
   51495   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
   51496   {
   51497     switch (value)
   51498     {
   51499     case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
   51500     case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
   51501     case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
   51502     default: return "invalid";
   51503     }
   51504   }
   51505 
   51506   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
   51507   {
   51508     if (!value) return "{}";
   51509     std::string result;
   51510     if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
   51511     if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
   51512     if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
   51513     return "{" + result.substr(0, result.size() - 3) + "}";
   51514   }
   51515 
   51516   VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
   51517   {
   51518     switch (value)
   51519     {
   51520     case ValidationCheckEXT::eAll: return "All";
   51521     case ValidationCheckEXT::eShaders: return "Shaders";
   51522     default: return "invalid";
   51523     }
   51524   }
   51525 
   51526   VULKAN_HPP_INLINE std::string to_string(SubgroupFeatureFlagBits value)
   51527   {
   51528     switch (value)
   51529     {
   51530     case SubgroupFeatureFlagBits::eBasic: return "Basic";
   51531     case SubgroupFeatureFlagBits::eVote: return "Vote";
   51532     case SubgroupFeatureFlagBits::eArithmetic: return "Arithmetic";
   51533     case SubgroupFeatureFlagBits::eBallot: return "Ballot";
   51534     case SubgroupFeatureFlagBits::eShuffle: return "Shuffle";
   51535     case SubgroupFeatureFlagBits::eShuffleRelative: return "ShuffleRelative";
   51536     case SubgroupFeatureFlagBits::eClustered: return "Clustered";
   51537     case SubgroupFeatureFlagBits::eQuad: return "Quad";
   51538     case SubgroupFeatureFlagBits::ePartitionedNV: return "PartitionedNV";
   51539     default: return "invalid";
   51540     }
   51541   }
   51542 
   51543   VULKAN_HPP_INLINE std::string to_string(SubgroupFeatureFlags value)
   51544   {
   51545     if (!value) return "{}";
   51546     std::string result;
   51547     if (value & SubgroupFeatureFlagBits::eBasic) result += "Basic | ";
   51548     if (value & SubgroupFeatureFlagBits::eVote) result += "Vote | ";
   51549     if (value & SubgroupFeatureFlagBits::eArithmetic) result += "Arithmetic | ";
   51550     if (value & SubgroupFeatureFlagBits::eBallot) result += "Ballot | ";
   51551     if (value & SubgroupFeatureFlagBits::eShuffle) result += "Shuffle | ";
   51552     if (value & SubgroupFeatureFlagBits::eShuffleRelative) result += "ShuffleRelative | ";
   51553     if (value & SubgroupFeatureFlagBits::eClustered) result += "Clustered | ";
   51554     if (value & SubgroupFeatureFlagBits::eQuad) result += "Quad | ";
   51555     if (value & SubgroupFeatureFlagBits::ePartitionedNV) result += "PartitionedNV | ";
   51556     return "{" + result.substr(0, result.size() - 3) + "}";
   51557   }
   51558 
   51559   VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
   51560   {
   51561     switch (value)
   51562     {
   51563     case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
   51564     case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
   51565     case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
   51566     case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
   51567     default: return "invalid";
   51568     }
   51569   }
   51570 
   51571   VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
   51572   {
   51573     if (!value) return "{}";
   51574     std::string result;
   51575     if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
   51576     if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
   51577     if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
   51578     if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
   51579     return "{" + result.substr(0, result.size() - 3) + "}";
   51580   }
   51581 
   51582   VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
   51583   {
   51584     switch (value)
   51585     {
   51586     case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
   51587     case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
   51588     default: return "invalid";
   51589     }
   51590   }
   51591 
   51592   VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
   51593   {
   51594     if (!value) return "{}";
   51595     std::string result;
   51596     if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
   51597     if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
   51598     return "{" + result.substr(0, result.size() - 3) + "}";
   51599   }
   51600 
   51601   VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
   51602   {
   51603     switch (value)
   51604     {
   51605     case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
   51606     case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
   51607     case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
   51608     case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
   51609     case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
   51610     case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
   51611     case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
   51612     case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
   51613     default: return "invalid";
   51614     }
   51615   }
   51616 
   51617   VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
   51618   {
   51619     switch (value)
   51620     {
   51621     case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
   51622     case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
   51623     case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
   51624     case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
   51625     case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
   51626     default: return "invalid";
   51627     }
   51628   }
   51629 
   51630   VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
   51631   {
   51632     switch (value)
   51633     {
   51634     case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
   51635     case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT: return "UpdateAfterBindPoolEXT";
   51636     default: return "invalid";
   51637     }
   51638   }
   51639 
   51640   VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
   51641   {
   51642     if (!value) return "{}";
   51643     std::string result;
   51644     if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
   51645     if (value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT) result += "UpdateAfterBindPoolEXT | ";
   51646     return "{" + result.substr(0, result.size() - 3) + "}";
   51647   }
   51648 
   51649   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBits value)
   51650   {
   51651     switch (value)
   51652     {
   51653     case ExternalMemoryHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
   51654     case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
   51655     case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
   51656     case ExternalMemoryHandleTypeFlagBits::eD3D11Texture: return "D3D11Texture";
   51657     case ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt: return "D3D11TextureKmt";
   51658     case ExternalMemoryHandleTypeFlagBits::eD3D12Heap: return "D3D12Heap";
   51659     case ExternalMemoryHandleTypeFlagBits::eD3D12Resource: return "D3D12Resource";
   51660     case ExternalMemoryHandleTypeFlagBits::eDmaBufEXT: return "DmaBufEXT";
   51661     case ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID: return "AndroidHardwareBufferANDROID";
   51662     case ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT: return "HostAllocationEXT";
   51663     case ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT";
   51664     default: return "invalid";
   51665     }
   51666   }
   51667 
   51668   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlags value)
   51669   {
   51670     if (!value) return "{}";
   51671     std::string result;
   51672     if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
   51673     if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
   51674     if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
   51675     if (value & ExternalMemoryHandleTypeFlagBits::eD3D11Texture) result += "D3D11Texture | ";
   51676     if (value & ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
   51677     if (value & ExternalMemoryHandleTypeFlagBits::eD3D12Heap) result += "D3D12Heap | ";
   51678     if (value & ExternalMemoryHandleTypeFlagBits::eD3D12Resource) result += "D3D12Resource | ";
   51679     if (value & ExternalMemoryHandleTypeFlagBits::eDmaBufEXT) result += "DmaBufEXT | ";
   51680     if (value & ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID) result += "AndroidHardwareBufferANDROID | ";
   51681     if (value & ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT) result += "HostAllocationEXT | ";
   51682     if (value & ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT) result += "HostMappedForeignMemoryEXT | ";
   51683     return "{" + result.substr(0, result.size() - 3) + "}";
   51684   }
   51685 
   51686   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBits value)
   51687   {
   51688     switch (value)
   51689     {
   51690     case ExternalMemoryFeatureFlagBits::eDedicatedOnly: return "DedicatedOnly";
   51691     case ExternalMemoryFeatureFlagBits::eExportable: return "Exportable";
   51692     case ExternalMemoryFeatureFlagBits::eImportable: return "Importable";
   51693     default: return "invalid";
   51694     }
   51695   }
   51696 
   51697   VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlags value)
   51698   {
   51699     if (!value) return "{}";
   51700     std::string result;
   51701     if (value & ExternalMemoryFeatureFlagBits::eDedicatedOnly) result += "DedicatedOnly | ";
   51702     if (value & ExternalMemoryFeatureFlagBits::eExportable) result += "Exportable | ";
   51703     if (value & ExternalMemoryFeatureFlagBits::eImportable) result += "Importable | ";
   51704     return "{" + result.substr(0, result.size() - 3) + "}";
   51705   }
   51706 
   51707   VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBits value)
   51708   {
   51709     switch (value)
   51710     {
   51711     case ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
   51712     case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
   51713     case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
   51714     case ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence: return "D3D12Fence";
   51715     case ExternalSemaphoreHandleTypeFlagBits::eSyncFd: return "SyncFd";
   51716     default: return "invalid";
   51717     }
   51718   }
   51719 
   51720   VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlags value)
   51721   {
   51722     if (!value) return "{}";
   51723     std::string result;
   51724     if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
   51725     if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
   51726     if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
   51727     if (value & ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) result += "D3D12Fence | ";
   51728     if (value & ExternalSemaphoreHandleTypeFlagBits::eSyncFd) result += "SyncFd | ";
   51729     return "{" + result.substr(0, result.size() - 3) + "}";
   51730   }
   51731 
   51732   VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBits value)
   51733   {
   51734     switch (value)
   51735     {
   51736     case ExternalSemaphoreFeatureFlagBits::eExportable: return "Exportable";
   51737     case ExternalSemaphoreFeatureFlagBits::eImportable: return "Importable";
   51738     default: return "invalid";
   51739     }
   51740   }
   51741 
   51742   VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlags value)
   51743   {
   51744     if (!value) return "{}";
   51745     std::string result;
   51746     if (value & ExternalSemaphoreFeatureFlagBits::eExportable) result += "Exportable | ";
   51747     if (value & ExternalSemaphoreFeatureFlagBits::eImportable) result += "Importable | ";
   51748     return "{" + result.substr(0, result.size() - 3) + "}";
   51749   }
   51750 
   51751   VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBits value)
   51752   {
   51753     switch (value)
   51754     {
   51755     case SemaphoreImportFlagBits::eTemporary: return "Temporary";
   51756     default: return "invalid";
   51757     }
   51758   }
   51759 
   51760   VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlags value)
   51761   {
   51762     if (!value) return "{}";
   51763     std::string result;
   51764     if (value & SemaphoreImportFlagBits::eTemporary) result += "Temporary | ";
   51765     return "{" + result.substr(0, result.size() - 3) + "}";
   51766   }
   51767 
   51768   VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBits value)
   51769   {
   51770     switch (value)
   51771     {
   51772     case ExternalFenceHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
   51773     case ExternalFenceHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
   51774     case ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
   51775     case ExternalFenceHandleTypeFlagBits::eSyncFd: return "SyncFd";
   51776     default: return "invalid";
   51777     }
   51778   }
   51779 
   51780   VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlags value)
   51781   {
   51782     if (!value) return "{}";
   51783     std::string result;
   51784     if (value & ExternalFenceHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
   51785     if (value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
   51786     if (value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
   51787     if (value & ExternalFenceHandleTypeFlagBits::eSyncFd) result += "SyncFd | ";
   51788     return "{" + result.substr(0, result.size() - 3) + "}";
   51789   }
   51790 
   51791   VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBits value)
   51792   {
   51793     switch (value)
   51794     {
   51795     case ExternalFenceFeatureFlagBits::eExportable: return "Exportable";
   51796     case ExternalFenceFeatureFlagBits::eImportable: return "Importable";
   51797     default: return "invalid";
   51798     }
   51799   }
   51800 
   51801   VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlags value)
   51802   {
   51803     if (!value) return "{}";
   51804     std::string result;
   51805     if (value & ExternalFenceFeatureFlagBits::eExportable) result += "Exportable | ";
   51806     if (value & ExternalFenceFeatureFlagBits::eImportable) result += "Importable | ";
   51807     return "{" + result.substr(0, result.size() - 3) + "}";
   51808   }
   51809 
   51810   VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBits value)
   51811   {
   51812     switch (value)
   51813     {
   51814     case FenceImportFlagBits::eTemporary: return "Temporary";
   51815     default: return "invalid";
   51816     }
   51817   }
   51818 
   51819   VULKAN_HPP_INLINE std::string to_string(FenceImportFlags value)
   51820   {
   51821     if (!value) return "{}";
   51822     std::string result;
   51823     if (value & FenceImportFlagBits::eTemporary) result += "Temporary | ";
   51824     return "{" + result.substr(0, result.size() - 3) + "}";
   51825   }
   51826 
   51827   VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
   51828   {
   51829     switch (value)
   51830     {
   51831     case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
   51832     default: return "invalid";
   51833     }
   51834   }
   51835 
   51836   VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
   51837   {
   51838     if (!value) return "{}";
   51839     std::string result;
   51840     if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
   51841     return "{" + result.substr(0, result.size() - 3) + "}";
   51842   }
   51843 
   51844   VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
   51845   {
   51846     switch (value)
   51847     {
   51848     case DisplayPowerStateEXT::eOff: return "Off";
   51849     case DisplayPowerStateEXT::eSuspend: return "Suspend";
   51850     case DisplayPowerStateEXT::eOn: return "On";
   51851     default: return "invalid";
   51852     }
   51853   }
   51854 
   51855   VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
   51856   {
   51857     switch (value)
   51858     {
   51859     case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
   51860     default: return "invalid";
   51861     }
   51862   }
   51863 
   51864   VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
   51865   {
   51866     switch (value)
   51867     {
   51868     case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
   51869     default: return "invalid";
   51870     }
   51871   }
   51872 
   51873   VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBits value)
   51874   {
   51875     switch (value)
   51876     {
   51877     case PeerMemoryFeatureFlagBits::eCopySrc: return "CopySrc";
   51878     case PeerMemoryFeatureFlagBits::eCopyDst: return "CopyDst";
   51879     case PeerMemoryFeatureFlagBits::eGenericSrc: return "GenericSrc";
   51880     case PeerMemoryFeatureFlagBits::eGenericDst: return "GenericDst";
   51881     default: return "invalid";
   51882     }
   51883   }
   51884 
   51885   VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlags value)
   51886   {
   51887     if (!value) return "{}";
   51888     std::string result;
   51889     if (value & PeerMemoryFeatureFlagBits::eCopySrc) result += "CopySrc | ";
   51890     if (value & PeerMemoryFeatureFlagBits::eCopyDst) result += "CopyDst | ";
   51891     if (value & PeerMemoryFeatureFlagBits::eGenericSrc) result += "GenericSrc | ";
   51892     if (value & PeerMemoryFeatureFlagBits::eGenericDst) result += "GenericDst | ";
   51893     return "{" + result.substr(0, result.size() - 3) + "}";
   51894   }
   51895 
   51896   VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBits value)
   51897   {
   51898     switch (value)
   51899     {
   51900     case MemoryAllocateFlagBits::eDeviceMask: return "DeviceMask";
   51901     default: return "invalid";
   51902     }
   51903   }
   51904 
   51905   VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlags value)
   51906   {
   51907     if (!value) return "{}";
   51908     std::string result;
   51909     if (value & MemoryAllocateFlagBits::eDeviceMask) result += "DeviceMask | ";
   51910     return "{" + result.substr(0, result.size() - 3) + "}";
   51911   }
   51912 
   51913   VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHR value)
   51914   {
   51915     switch (value)
   51916     {
   51917     case DeviceGroupPresentModeFlagBitsKHR::eLocal: return "Local";
   51918     case DeviceGroupPresentModeFlagBitsKHR::eRemote: return "Remote";
   51919     case DeviceGroupPresentModeFlagBitsKHR::eSum: return "Sum";
   51920     case DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice: return "LocalMultiDevice";
   51921     default: return "invalid";
   51922     }
   51923   }
   51924 
   51925   VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHR value)
   51926   {
   51927     if (!value) return "{}";
   51928     std::string result;
   51929     if (value & DeviceGroupPresentModeFlagBitsKHR::eLocal) result += "Local | ";
   51930     if (value & DeviceGroupPresentModeFlagBitsKHR::eRemote) result += "Remote | ";
   51931     if (value & DeviceGroupPresentModeFlagBitsKHR::eSum) result += "Sum | ";
   51932     if (value & DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice) result += "LocalMultiDevice | ";
   51933     return "{" + result.substr(0, result.size() - 3) + "}";
   51934   }
   51935 
   51936   VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
   51937   {
   51938     switch (value)
   51939     {
   51940     case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions: return "SplitInstanceBindRegions";
   51941     case SwapchainCreateFlagBitsKHR::eProtected: return "Protected";
   51942     default: return "invalid";
   51943     }
   51944   }
   51945 
   51946   VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
   51947   {
   51948     if (!value) return "{}";
   51949     std::string result;
   51950     if (value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) result += "SplitInstanceBindRegions | ";
   51951     if (value & SwapchainCreateFlagBitsKHR::eProtected) result += "Protected | ";
   51952     return "{" + result.substr(0, result.size() - 3) + "}";
   51953   }
   51954 
   51955   VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
   51956   {
   51957     switch (value)
   51958     {
   51959     case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
   51960     case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
   51961     case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
   51962     case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
   51963     case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
   51964     case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
   51965     case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
   51966     case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
   51967     default: return "invalid";
   51968     }
   51969   }
   51970 
   51971   VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
   51972   {
   51973     switch (value)
   51974     {
   51975     case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
   51976     case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
   51977     default: return "invalid";
   51978     }
   51979   }
   51980 
   51981   VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
   51982   {
   51983     switch (value)
   51984     {
   51985     case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
   51986     case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
   51987     default: return "invalid";
   51988     }
   51989   }
   51990 
   51991   VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
   51992   {
   51993     if (!value) return "{}";
   51994     std::string result;
   51995     if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
   51996     if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
   51997     return "{" + result.substr(0, result.size() - 3) + "}";
   51998   }
   51999 
   52000   VULKAN_HPP_INLINE std::string to_string(PointClippingBehavior value)
   52001   {
   52002     switch (value)
   52003     {
   52004     case PointClippingBehavior::eAllClipPlanes: return "AllClipPlanes";
   52005     case PointClippingBehavior::eUserClipPlanesOnly: return "UserClipPlanesOnly";
   52006     default: return "invalid";
   52007     }
   52008   }
   52009 
   52010   VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
   52011   {
   52012     switch (value)
   52013     {
   52014     case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
   52015     case SamplerReductionModeEXT::eMin: return "Min";
   52016     case SamplerReductionModeEXT::eMax: return "Max";
   52017     default: return "invalid";
   52018     }
   52019   }
   52020 
   52021   VULKAN_HPP_INLINE std::string to_string(TessellationDomainOrigin value)
   52022   {
   52023     switch (value)
   52024     {
   52025     case TessellationDomainOrigin::eUpperLeft: return "UpperLeft";
   52026     case TessellationDomainOrigin::eLowerLeft: return "LowerLeft";
   52027     default: return "invalid";
   52028     }
   52029   }
   52030 
   52031   VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversion value)
   52032   {
   52033     switch (value)
   52034     {
   52035     case SamplerYcbcrModelConversion::eRgbIdentity: return "RgbIdentity";
   52036     case SamplerYcbcrModelConversion::eYcbcrIdentity: return "YcbcrIdentity";
   52037     case SamplerYcbcrModelConversion::eYcbcr709: return "Ycbcr709";
   52038     case SamplerYcbcrModelConversion::eYcbcr601: return "Ycbcr601";
   52039     case SamplerYcbcrModelConversion::eYcbcr2020: return "Ycbcr2020";
   52040     default: return "invalid";
   52041     }
   52042   }
   52043 
   52044   VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRange value)
   52045   {
   52046     switch (value)
   52047     {
   52048     case SamplerYcbcrRange::eItuFull: return "ItuFull";
   52049     case SamplerYcbcrRange::eItuNarrow: return "ItuNarrow";
   52050     default: return "invalid";
   52051     }
   52052   }
   52053 
   52054   VULKAN_HPP_INLINE std::string to_string(ChromaLocation value)
   52055   {
   52056     switch (value)
   52057     {
   52058     case ChromaLocation::eCositedEven: return "CositedEven";
   52059     case ChromaLocation::eMidpoint: return "Midpoint";
   52060     default: return "invalid";
   52061     }
   52062   }
   52063 
   52064   VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
   52065   {
   52066     switch (value)
   52067     {
   52068     case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
   52069     case BlendOverlapEXT::eDisjoint: return "Disjoint";
   52070     case BlendOverlapEXT::eConjoint: return "Conjoint";
   52071     default: return "invalid";
   52072     }
   52073   }
   52074 
   52075   VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
   52076   {
   52077     switch (value)
   52078     {
   52079     case CoverageModulationModeNV::eNone: return "None";
   52080     case CoverageModulationModeNV::eRgb: return "Rgb";
   52081     case CoverageModulationModeNV::eAlpha: return "Alpha";
   52082     case CoverageModulationModeNV::eRgba: return "Rgba";
   52083     default: return "invalid";
   52084     }
   52085   }
   52086 
   52087   VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
   52088   {
   52089     switch (value)
   52090     {
   52091     case ValidationCacheHeaderVersionEXT::eOne: return "One";
   52092     default: return "invalid";
   52093     }
   52094   }
   52095 
   52096   VULKAN_HPP_INLINE std::string to_string(ShaderInfoTypeAMD value)
   52097   {
   52098     switch (value)
   52099     {
   52100     case ShaderInfoTypeAMD::eStatistics: return "Statistics";
   52101     case ShaderInfoTypeAMD::eBinary: return "Binary";
   52102     case ShaderInfoTypeAMD::eDisassembly: return "Disassembly";
   52103     default: return "invalid";
   52104     }
   52105   }
   52106 
   52107   VULKAN_HPP_INLINE std::string to_string(QueueGlobalPriorityEXT value)
   52108   {
   52109     switch (value)
   52110     {
   52111     case QueueGlobalPriorityEXT::eLow: return "Low";
   52112     case QueueGlobalPriorityEXT::eMedium: return "Medium";
   52113     case QueueGlobalPriorityEXT::eHigh: return "High";
   52114     case QueueGlobalPriorityEXT::eRealtime: return "Realtime";
   52115     default: return "invalid";
   52116     }
   52117   }
   52118 
   52119   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageSeverityFlagBitsEXT value)
   52120   {
   52121     switch (value)
   52122     {
   52123     case DebugUtilsMessageSeverityFlagBitsEXT::eVerbose: return "Verbose";
   52124     case DebugUtilsMessageSeverityFlagBitsEXT::eInfo: return "Info";
   52125     case DebugUtilsMessageSeverityFlagBitsEXT::eWarning: return "Warning";
   52126     case DebugUtilsMessageSeverityFlagBitsEXT::eError: return "Error";
   52127     default: return "invalid";
   52128     }
   52129   }
   52130 
   52131   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageSeverityFlagsEXT value)
   52132   {
   52133     if (!value) return "{}";
   52134     std::string result;
   52135     if (value & DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) result += "Verbose | ";
   52136     if (value & DebugUtilsMessageSeverityFlagBitsEXT::eInfo) result += "Info | ";
   52137     if (value & DebugUtilsMessageSeverityFlagBitsEXT::eWarning) result += "Warning | ";
   52138     if (value & DebugUtilsMessageSeverityFlagBitsEXT::eError) result += "Error | ";
   52139     return "{" + result.substr(0, result.size() - 3) + "}";
   52140   }
   52141 
   52142   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageTypeFlagBitsEXT value)
   52143   {
   52144     switch (value)
   52145     {
   52146     case DebugUtilsMessageTypeFlagBitsEXT::eGeneral: return "General";
   52147     case DebugUtilsMessageTypeFlagBitsEXT::eValidation: return "Validation";
   52148     case DebugUtilsMessageTypeFlagBitsEXT::ePerformance: return "Performance";
   52149     default: return "invalid";
   52150     }
   52151   }
   52152 
   52153   VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageTypeFlagsEXT value)
   52154   {
   52155     if (!value) return "{}";
   52156     std::string result;
   52157     if (value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral) result += "General | ";
   52158     if (value & DebugUtilsMessageTypeFlagBitsEXT::eValidation) result += "Validation | ";
   52159     if (value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance) result += "Performance | ";
   52160     return "{" + result.substr(0, result.size() - 3) + "}";
   52161   }
   52162 
   52163   VULKAN_HPP_INLINE std::string to_string(ConservativeRasterizationModeEXT value)
   52164   {
   52165     switch (value)
   52166     {
   52167     case ConservativeRasterizationModeEXT::eDisabled: return "Disabled";
   52168     case ConservativeRasterizationModeEXT::eOverestimate: return "Overestimate";
   52169     case ConservativeRasterizationModeEXT::eUnderestimate: return "Underestimate";
   52170     default: return "invalid";
   52171     }
   52172   }
   52173 
   52174   VULKAN_HPP_INLINE std::string to_string(DescriptorBindingFlagBitsEXT value)
   52175   {
   52176     switch (value)
   52177     {
   52178     case DescriptorBindingFlagBitsEXT::eUpdateAfterBind: return "UpdateAfterBind";
   52179     case DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending: return "UpdateUnusedWhilePending";
   52180     case DescriptorBindingFlagBitsEXT::ePartiallyBound: return "PartiallyBound";
   52181     case DescriptorBindingFlagBitsEXT::eVariableDescriptorCount: return "VariableDescriptorCount";
   52182     default: return "invalid";
   52183     }
   52184   }
   52185 
   52186   VULKAN_HPP_INLINE std::string to_string(DescriptorBindingFlagsEXT value)
   52187   {
   52188     if (!value) return "{}";
   52189     std::string result;
   52190     if (value & DescriptorBindingFlagBitsEXT::eUpdateAfterBind) result += "UpdateAfterBind | ";
   52191     if (value & DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending) result += "UpdateUnusedWhilePending | ";
   52192     if (value & DescriptorBindingFlagBitsEXT::ePartiallyBound) result += "PartiallyBound | ";
   52193     if (value & DescriptorBindingFlagBitsEXT::eVariableDescriptorCount) result += "VariableDescriptorCount | ";
   52194     return "{" + result.substr(0, result.size() - 3) + "}";
   52195   }
   52196 
   52197   VULKAN_HPP_INLINE std::string to_string(VendorId value)
   52198   {
   52199     switch (value)
   52200     {
   52201     case VendorId::eViv: return "Viv";
   52202     case VendorId::eVsi: return "Vsi";
   52203     case VendorId::eKazan: return "Kazan";
   52204     default: return "invalid";
   52205     }
   52206   }
   52207 
   52208   VULKAN_HPP_INLINE std::string to_string(DriverIdKHR value)
   52209   {
   52210     switch (value)
   52211     {
   52212     case DriverIdKHR::eAmdProprietary: return "AmdProprietary";
   52213     case DriverIdKHR::eAmdOpenSource: return "AmdOpenSource";
   52214     case DriverIdKHR::eMesaRadv: return "MesaRadv";
   52215     case DriverIdKHR::eNvidiaProprietary: return "NvidiaProprietary";
   52216     case DriverIdKHR::eIntelProprietaryWindows: return "IntelProprietaryWindows";
   52217     case DriverIdKHR::eIntelOpenSourceMesa: return "IntelOpenSourceMesa";
   52218     case DriverIdKHR::eImaginationProprietary: return "ImaginationProprietary";
   52219     case DriverIdKHR::eQualcommProprietary: return "QualcommProprietary";
   52220     case DriverIdKHR::eArmProprietary: return "ArmProprietary";
   52221     default: return "invalid";
   52222     }
   52223   }
   52224 
   52225   VULKAN_HPP_INLINE std::string to_string(ConditionalRenderingFlagBitsEXT value)
   52226   {
   52227     switch (value)
   52228     {
   52229     case ConditionalRenderingFlagBitsEXT::eInverted: return "Inverted";
   52230     default: return "invalid";
   52231     }
   52232   }
   52233 
   52234   VULKAN_HPP_INLINE std::string to_string(ConditionalRenderingFlagsEXT value)
   52235   {
   52236     if (!value) return "{}";
   52237     std::string result;
   52238     if (value & ConditionalRenderingFlagBitsEXT::eInverted) result += "Inverted | ";
   52239     return "{" + result.substr(0, result.size() - 3) + "}";
   52240   }
   52241 
   52242   VULKAN_HPP_INLINE std::string to_string(ShadingRatePaletteEntryNV value)
   52243   {
   52244     switch (value)
   52245     {
   52246     case ShadingRatePaletteEntryNV::eNoInvocations: return "NoInvocations";
   52247     case ShadingRatePaletteEntryNV::e16InvocationsPerPixel: return "16InvocationsPerPixel";
   52248     case ShadingRatePaletteEntryNV::e8InvocationsPerPixel: return "8InvocationsPerPixel";
   52249     case ShadingRatePaletteEntryNV::e4InvocationsPerPixel: return "4InvocationsPerPixel";
   52250     case ShadingRatePaletteEntryNV::e2InvocationsPerPixel: return "2InvocationsPerPixel";
   52251     case ShadingRatePaletteEntryNV::e1InvocationPerPixel: return "1InvocationPerPixel";
   52252     case ShadingRatePaletteEntryNV::e1InvocationPer2X1Pixels: return "1InvocationPer2X1Pixels";
   52253     case ShadingRatePaletteEntryNV::e1InvocationPer1X2Pixels: return "1InvocationPer1X2Pixels";
   52254     case ShadingRatePaletteEntryNV::e1InvocationPer2X2Pixels: return "1InvocationPer2X2Pixels";
   52255     case ShadingRatePaletteEntryNV::e1InvocationPer4X2Pixels: return "1InvocationPer4X2Pixels";
   52256     case ShadingRatePaletteEntryNV::e1InvocationPer2X4Pixels: return "1InvocationPer2X4Pixels";
   52257     case ShadingRatePaletteEntryNV::e1InvocationPer4X4Pixels: return "1InvocationPer4X4Pixels";
   52258     default: return "invalid";
   52259     }
   52260   }
   52261 
   52262   VULKAN_HPP_INLINE std::string to_string(CoarseSampleOrderTypeNV value)
   52263   {
   52264     switch (value)
   52265     {
   52266     case CoarseSampleOrderTypeNV::eDefault: return "Default";
   52267     case CoarseSampleOrderTypeNV::eCustom: return "Custom";
   52268     case CoarseSampleOrderTypeNV::ePixelMajor: return "PixelMajor";
   52269     case CoarseSampleOrderTypeNV::eSampleMajor: return "SampleMajor";
   52270     default: return "invalid";
   52271     }
   52272   }
   52273 
   52274   VULKAN_HPP_INLINE std::string to_string(GeometryInstanceFlagBitsNV value)
   52275   {
   52276     switch (value)
   52277     {
   52278     case GeometryInstanceFlagBitsNV::eTriangleCullDisable: return "TriangleCullDisable";
   52279     case GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise: return "TriangleFrontCounterclockwise";
   52280     case GeometryInstanceFlagBitsNV::eForceOpaque: return "ForceOpaque";
   52281     case GeometryInstanceFlagBitsNV::eForceNoOpaque: return "ForceNoOpaque";
   52282     default: return "invalid";
   52283     }
   52284   }
   52285 
   52286   VULKAN_HPP_INLINE std::string to_string(GeometryInstanceFlagsNV value)
   52287   {
   52288     if (!value) return "{}";
   52289     std::string result;
   52290     if (value & GeometryInstanceFlagBitsNV::eTriangleCullDisable) result += "TriangleCullDisable | ";
   52291     if (value & GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise) result += "TriangleFrontCounterclockwise | ";
   52292     if (value & GeometryInstanceFlagBitsNV::eForceOpaque) result += "ForceOpaque | ";
   52293     if (value & GeometryInstanceFlagBitsNV::eForceNoOpaque) result += "ForceNoOpaque | ";
   52294     return "{" + result.substr(0, result.size() - 3) + "}";
   52295   }
   52296 
   52297   VULKAN_HPP_INLINE std::string to_string(GeometryFlagBitsNV value)
   52298   {
   52299     switch (value)
   52300     {
   52301     case GeometryFlagBitsNV::eOpaque: return "Opaque";
   52302     case GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation: return "NoDuplicateAnyHitInvocation";
   52303     default: return "invalid";
   52304     }
   52305   }
   52306 
   52307   VULKAN_HPP_INLINE std::string to_string(GeometryFlagsNV value)
   52308   {
   52309     if (!value) return "{}";
   52310     std::string result;
   52311     if (value & GeometryFlagBitsNV::eOpaque) result += "Opaque | ";
   52312     if (value & GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation) result += "NoDuplicateAnyHitInvocation | ";
   52313     return "{" + result.substr(0, result.size() - 3) + "}";
   52314   }
   52315 
   52316   VULKAN_HPP_INLINE std::string to_string(BuildAccelerationStructureFlagBitsNV value)
   52317   {
   52318     switch (value)
   52319     {
   52320     case BuildAccelerationStructureFlagBitsNV::eAllowUpdate: return "AllowUpdate";
   52321     case BuildAccelerationStructureFlagBitsNV::eAllowCompaction: return "AllowCompaction";
   52322     case BuildAccelerationStructureFlagBitsNV::ePreferFastTrace: return "PreferFastTrace";
   52323     case BuildAccelerationStructureFlagBitsNV::ePreferFastBuild: return "PreferFastBuild";
   52324     case BuildAccelerationStructureFlagBitsNV::eLowMemory: return "LowMemory";
   52325     default: return "invalid";
   52326     }
   52327   }
   52328 
   52329   VULKAN_HPP_INLINE std::string to_string(BuildAccelerationStructureFlagsNV value)
   52330   {
   52331     if (!value) return "{}";
   52332     std::string result;
   52333     if (value & BuildAccelerationStructureFlagBitsNV::eAllowUpdate) result += "AllowUpdate | ";
   52334     if (value & BuildAccelerationStructureFlagBitsNV::eAllowCompaction) result += "AllowCompaction | ";
   52335     if (value & BuildAccelerationStructureFlagBitsNV::ePreferFastTrace) result += "PreferFastTrace | ";
   52336     if (value & BuildAccelerationStructureFlagBitsNV::ePreferFastBuild) result += "PreferFastBuild | ";
   52337     if (value & BuildAccelerationStructureFlagBitsNV::eLowMemory) result += "LowMemory | ";
   52338     return "{" + result.substr(0, result.size() - 3) + "}";
   52339   }
   52340 
   52341   VULKAN_HPP_INLINE std::string to_string(CopyAccelerationStructureModeNV value)
   52342   {
   52343     switch (value)
   52344     {
   52345     case CopyAccelerationStructureModeNV::eClone: return "Clone";
   52346     case CopyAccelerationStructureModeNV::eCompact: return "Compact";
   52347     default: return "invalid";
   52348     }
   52349   }
   52350 
   52351   VULKAN_HPP_INLINE std::string to_string(AccelerationStructureTypeNV value)
   52352   {
   52353     switch (value)
   52354     {
   52355     case AccelerationStructureTypeNV::eTopLevel: return "TopLevel";
   52356     case AccelerationStructureTypeNV::eBottomLevel: return "BottomLevel";
   52357     default: return "invalid";
   52358     }
   52359   }
   52360 
   52361   VULKAN_HPP_INLINE std::string to_string(GeometryTypeNV value)
   52362   {
   52363     switch (value)
   52364     {
   52365     case GeometryTypeNV::eTriangles: return "Triangles";
   52366     case GeometryTypeNV::eAabbs: return "Aabbs";
   52367     default: return "invalid";
   52368     }
   52369   }
   52370 
   52371   VULKAN_HPP_INLINE std::string to_string(AccelerationStructureMemoryRequirementsTypeNV value)
   52372   {
   52373     switch (value)
   52374     {
   52375     case AccelerationStructureMemoryRequirementsTypeNV::eObject: return "Object";
   52376     case AccelerationStructureMemoryRequirementsTypeNV::eBuildScratch: return "BuildScratch";
   52377     case AccelerationStructureMemoryRequirementsTypeNV::eUpdateScratch: return "UpdateScratch";
   52378     default: return "invalid";
   52379     }
   52380   }
   52381 
   52382   VULKAN_HPP_INLINE std::string to_string(RayTracingShaderGroupTypeNV value)
   52383   {
   52384     switch (value)
   52385     {
   52386     case RayTracingShaderGroupTypeNV::eGeneral: return "General";
   52387     case RayTracingShaderGroupTypeNV::eTrianglesHitGroup: return "TrianglesHitGroup";
   52388     case RayTracingShaderGroupTypeNV::eProceduralHitGroup: return "ProceduralHitGroup";
   52389     default: return "invalid";
   52390     }
   52391   }
   52392 
   52393   VULKAN_HPP_INLINE std::string to_string(MemoryOverallocationBehaviorAMD value)
   52394   {
   52395     switch (value)
   52396     {
   52397     case MemoryOverallocationBehaviorAMD::eDefault: return "Default";
   52398     case MemoryOverallocationBehaviorAMD::eAllowed: return "Allowed";
   52399     case MemoryOverallocationBehaviorAMD::eDisallowed: return "Disallowed";
   52400     default: return "invalid";
   52401     }
   52402   }
   52403 
   52404   class DispatchLoaderDynamic
   52405   {
   52406   public:
   52407     PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0;
   52408     PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0;
   52409 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   52410     PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0;
   52411 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   52412     PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0;
   52413     PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0;
   52414     PFN_vkAllocateMemory vkAllocateMemory = 0;
   52415     PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0;
   52416     PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0;
   52417     PFN_vkBindBufferMemory vkBindBufferMemory = 0;
   52418     PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0;
   52419     PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0;
   52420     PFN_vkBindImageMemory vkBindImageMemory = 0;
   52421     PFN_vkBindImageMemory2 vkBindImageMemory2 = 0;
   52422     PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0;
   52423     PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
   52424     PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0;
   52425     PFN_vkCmdBeginQuery vkCmdBeginQuery = 0;
   52426     PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0;
   52427     PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0;
   52428     PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0;
   52429     PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0;
   52430     PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0;
   52431     PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0;
   52432     PFN_vkCmdBindPipeline vkCmdBindPipeline = 0;
   52433     PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0;
   52434     PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0;
   52435     PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0;
   52436     PFN_vkCmdBlitImage vkCmdBlitImage = 0;
   52437     PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0;
   52438     PFN_vkCmdClearAttachments vkCmdClearAttachments = 0;
   52439     PFN_vkCmdClearColorImage vkCmdClearColorImage = 0;
   52440     PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0;
   52441     PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0;
   52442     PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0;
   52443     PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0;
   52444     PFN_vkCmdCopyImage vkCmdCopyImage = 0;
   52445     PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0;
   52446     PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0;
   52447     PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0;
   52448     PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0;
   52449     PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0;
   52450     PFN_vkCmdDispatch vkCmdDispatch = 0;
   52451     PFN_vkCmdDispatchBase vkCmdDispatchBase = 0;
   52452     PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0;
   52453     PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0;
   52454     PFN_vkCmdDraw vkCmdDraw = 0;
   52455     PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0;
   52456     PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0;
   52457     PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0;
   52458     PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0;
   52459     PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0;
   52460     PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0;
   52461     PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0;
   52462     PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0;
   52463     PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0;
   52464     PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0;
   52465     PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0;
   52466     PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0;
   52467     PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0;
   52468     PFN_vkCmdEndQuery vkCmdEndQuery = 0;
   52469     PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0;
   52470     PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0;
   52471     PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0;
   52472     PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0;
   52473     PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0;
   52474     PFN_vkCmdFillBuffer vkCmdFillBuffer = 0;
   52475     PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0;
   52476     PFN_vkCmdNextSubpass vkCmdNextSubpass = 0;
   52477     PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0;
   52478     PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0;
   52479     PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX = 0;
   52480     PFN_vkCmdPushConstants vkCmdPushConstants = 0;
   52481     PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0;
   52482     PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0;
   52483     PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX = 0;
   52484     PFN_vkCmdResetEvent vkCmdResetEvent = 0;
   52485     PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0;
   52486     PFN_vkCmdResolveImage vkCmdResolveImage = 0;
   52487     PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0;
   52488     PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0;
   52489     PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0;
   52490     PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0;
   52491     PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0;
   52492     PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0;
   52493     PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0;
   52494     PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0;
   52495     PFN_vkCmdSetEvent vkCmdSetEvent = 0;
   52496     PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0;
   52497     PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0;
   52498     PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0;
   52499     PFN_vkCmdSetScissor vkCmdSetScissor = 0;
   52500     PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0;
   52501     PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0;
   52502     PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0;
   52503     PFN_vkCmdSetViewport vkCmdSetViewport = 0;
   52504     PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0;
   52505     PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0;
   52506     PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0;
   52507     PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0;
   52508     PFN_vkCmdWaitEvents vkCmdWaitEvents = 0;
   52509     PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0;
   52510     PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0;
   52511     PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0;
   52512     PFN_vkCompileDeferredNV vkCompileDeferredNV = 0;
   52513     PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0;
   52514 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   52515     PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
   52516 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   52517     PFN_vkCreateBuffer vkCreateBuffer = 0;
   52518     PFN_vkCreateBufferView vkCreateBufferView = 0;
   52519     PFN_vkCreateCommandPool vkCreateCommandPool = 0;
   52520     PFN_vkCreateComputePipelines vkCreateComputePipelines = 0;
   52521     PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
   52522     PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0;
   52523     PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0;
   52524     PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0;
   52525     PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0;
   52526     PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0;
   52527     PFN_vkCreateDevice vkCreateDevice = 0;
   52528     PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0;
   52529     PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0;
   52530     PFN_vkCreateEvent vkCreateEvent = 0;
   52531     PFN_vkCreateFence vkCreateFence = 0;
   52532     PFN_vkCreateFramebuffer vkCreateFramebuffer = 0;
   52533     PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0;
   52534 #ifdef VK_USE_PLATFORM_IOS_MVK
   52535     PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
   52536 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   52537     PFN_vkCreateImage vkCreateImage = 0;
   52538 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   52539     PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0;
   52540 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   52541     PFN_vkCreateImageView vkCreateImageView = 0;
   52542     PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX = 0;
   52543     PFN_vkCreateInstance vkCreateInstance = 0;
   52544 #ifdef VK_USE_PLATFORM_MACOS_MVK
   52545     PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
   52546 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   52547     PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX = 0;
   52548     PFN_vkCreatePipelineCache vkCreatePipelineCache = 0;
   52549     PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0;
   52550     PFN_vkCreateQueryPool vkCreateQueryPool = 0;
   52551     PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0;
   52552     PFN_vkCreateRenderPass vkCreateRenderPass = 0;
   52553     PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0;
   52554     PFN_vkCreateSampler vkCreateSampler = 0;
   52555     PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0;
   52556     PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0;
   52557     PFN_vkCreateSemaphore vkCreateSemaphore = 0;
   52558     PFN_vkCreateShaderModule vkCreateShaderModule = 0;
   52559     PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0;
   52560     PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0;
   52561     PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0;
   52562 #ifdef VK_USE_PLATFORM_VI_NN
   52563     PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
   52564 #endif /*VK_USE_PLATFORM_VI_NN*/
   52565 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   52566     PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0;
   52567 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   52568 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52569     PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0;
   52570 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52571 #ifdef VK_USE_PLATFORM_XCB_KHR
   52572     PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0;
   52573 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   52574 #ifdef VK_USE_PLATFORM_XLIB_KHR
   52575     PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0;
   52576 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   52577     PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0;
   52578     PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0;
   52579     PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0;
   52580     PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0;
   52581     PFN_vkDestroyBuffer vkDestroyBuffer = 0;
   52582     PFN_vkDestroyBufferView vkDestroyBufferView = 0;
   52583     PFN_vkDestroyCommandPool vkDestroyCommandPool = 0;
   52584     PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
   52585     PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0;
   52586     PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0;
   52587     PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0;
   52588     PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0;
   52589     PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0;
   52590     PFN_vkDestroyDevice vkDestroyDevice = 0;
   52591     PFN_vkDestroyEvent vkDestroyEvent = 0;
   52592     PFN_vkDestroyFence vkDestroyFence = 0;
   52593     PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0;
   52594     PFN_vkDestroyImage vkDestroyImage = 0;
   52595     PFN_vkDestroyImageView vkDestroyImageView = 0;
   52596     PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX = 0;
   52597     PFN_vkDestroyInstance vkDestroyInstance = 0;
   52598     PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX = 0;
   52599     PFN_vkDestroyPipeline vkDestroyPipeline = 0;
   52600     PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0;
   52601     PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0;
   52602     PFN_vkDestroyQueryPool vkDestroyQueryPool = 0;
   52603     PFN_vkDestroyRenderPass vkDestroyRenderPass = 0;
   52604     PFN_vkDestroySampler vkDestroySampler = 0;
   52605     PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0;
   52606     PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0;
   52607     PFN_vkDestroySemaphore vkDestroySemaphore = 0;
   52608     PFN_vkDestroyShaderModule vkDestroyShaderModule = 0;
   52609     PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0;
   52610     PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0;
   52611     PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0;
   52612     PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0;
   52613     PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0;
   52614     PFN_vkEndCommandBuffer vkEndCommandBuffer = 0;
   52615     PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0;
   52616     PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0;
   52617     PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
   52618     PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0;
   52619     PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0;
   52620     PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0;
   52621     PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0;
   52622     PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0;
   52623     PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0;
   52624     PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0;
   52625     PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0;
   52626     PFN_vkFreeMemory vkFreeMemory = 0;
   52627     PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0;
   52628     PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0;
   52629 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   52630     PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
   52631 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   52632     PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0;
   52633     PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0;
   52634     PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0;
   52635     PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0;
   52636     PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0;
   52637     PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0;
   52638     PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0;
   52639     PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0;
   52640     PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0;
   52641     PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0;
   52642     PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0;
   52643     PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
   52644     PFN_vkGetDeviceQueue vkGetDeviceQueue = 0;
   52645     PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0;
   52646     PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0;
   52647     PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0;
   52648     PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0;
   52649     PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0;
   52650     PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0;
   52651     PFN_vkGetEventStatus vkGetEventStatus = 0;
   52652     PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0;
   52653     PFN_vkGetFenceStatus vkGetFenceStatus = 0;
   52654 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52655     PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0;
   52656 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52657     PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0;
   52658     PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0;
   52659     PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0;
   52660     PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0;
   52661     PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0;
   52662     PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0;
   52663     PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0;
   52664     PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0;
   52665     PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
   52666 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   52667     PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0;
   52668 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   52669     PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0;
   52670     PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0;
   52671     PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
   52672 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52673     PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0;
   52674 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52675 #ifdef VK_USE_PLATFORM_WIN32_NV
   52676     PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
   52677 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   52678 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52679     PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
   52680 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52681     PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0;
   52682     PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
   52683     PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0;
   52684     PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0;
   52685     PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0;
   52686     PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0;
   52687     PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0;
   52688     PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0;
   52689     PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0;
   52690     PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0;
   52691     PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
   52692     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0;
   52693     PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0;
   52694     PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0;
   52695     PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0;
   52696     PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0;
   52697     PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0;
   52698     PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0;
   52699     PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0;
   52700     PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 0;
   52701     PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0;
   52702     PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0;
   52703     PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0;
   52704     PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0;
   52705     PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0;
   52706     PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0;
   52707     PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
   52708     PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
   52709     PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0;
   52710     PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0;
   52711     PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0;
   52712     PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0;
   52713     PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0;
   52714     PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0;
   52715     PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0;
   52716     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0;
   52717     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
   52718     PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
   52719     PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
   52720     PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0;
   52721     PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0;
   52722     PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0;
   52723     PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
   52724     PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0;
   52725 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   52726     PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
   52727 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   52728 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52729     PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
   52730 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52731 #ifdef VK_USE_PLATFORM_XCB_KHR
   52732     PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
   52733 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   52734 #ifdef VK_USE_PLATFORM_XLIB_KHR
   52735     PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
   52736 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   52737     PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0;
   52738     PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0;
   52739     PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0;
   52740 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   52741     PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
   52742 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   52743     PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0;
   52744     PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0;
   52745     PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0;
   52746     PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0;
   52747 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52748     PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0;
   52749 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52750     PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0;
   52751     PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0;
   52752     PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0;
   52753     PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0;
   52754     PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
   52755     PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
   52756 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52757     PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
   52758 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52759     PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
   52760 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52761     PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
   52762 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52763     PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0;
   52764     PFN_vkMapMemory vkMapMemory = 0;
   52765     PFN_vkMergePipelineCaches vkMergePipelineCaches = 0;
   52766     PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0;
   52767     PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0;
   52768     PFN_vkQueueBindSparse vkQueueBindSparse = 0;
   52769     PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0;
   52770     PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0;
   52771     PFN_vkQueuePresentKHR vkQueuePresentKHR = 0;
   52772     PFN_vkQueueSubmit vkQueueSubmit = 0;
   52773     PFN_vkQueueWaitIdle vkQueueWaitIdle = 0;
   52774     PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0;
   52775     PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0;
   52776     PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX = 0;
   52777     PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0;
   52778     PFN_vkResetCommandBuffer vkResetCommandBuffer = 0;
   52779     PFN_vkResetCommandPool vkResetCommandPool = 0;
   52780     PFN_vkResetDescriptorPool vkResetDescriptorPool = 0;
   52781     PFN_vkResetEvent vkResetEvent = 0;
   52782     PFN_vkResetFences vkResetFences = 0;
   52783     PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0;
   52784     PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0;
   52785     PFN_vkSetEvent vkSetEvent = 0;
   52786     PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0;
   52787     PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0;
   52788     PFN_vkTrimCommandPool vkTrimCommandPool = 0;
   52789     PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0;
   52790     PFN_vkUnmapMemory vkUnmapMemory = 0;
   52791     PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX = 0;
   52792     PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0;
   52793     PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0;
   52794     PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0;
   52795     PFN_vkWaitForFences vkWaitForFences = 0;
   52796   public:
   52797     DispatchLoaderDynamic(Instance instance = Instance(), Device device = Device())
   52798     {
   52799       if (instance)
   52800       {
   52801         init(instance, device);
   52802       }
   52803     }
   52804 
   52805     void init(Instance instance, Device device = Device())
   52806     {
   52807       vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR(device ? device.getProcAddr( "vkAcquireNextImage2KHR") : instance.getProcAddr( "vkAcquireNextImage2KHR"));
   52808       vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR(device ? device.getProcAddr( "vkAcquireNextImageKHR") : instance.getProcAddr( "vkAcquireNextImageKHR"));
   52809 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   52810       vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT(instance.getProcAddr( "vkAcquireXlibDisplayEXT"));
   52811 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   52812       vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers(device ? device.getProcAddr( "vkAllocateCommandBuffers") : instance.getProcAddr( "vkAllocateCommandBuffers"));
   52813       vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets(device ? device.getProcAddr( "vkAllocateDescriptorSets") : instance.getProcAddr( "vkAllocateDescriptorSets"));
   52814       vkAllocateMemory = PFN_vkAllocateMemory(device ? device.getProcAddr( "vkAllocateMemory") : instance.getProcAddr( "vkAllocateMemory"));
   52815       vkBeginCommandBuffer = PFN_vkBeginCommandBuffer(device ? device.getProcAddr( "vkBeginCommandBuffer") : instance.getProcAddr( "vkBeginCommandBuffer"));
   52816       vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV(device ? device.getProcAddr( "vkBindAccelerationStructureMemoryNV") : instance.getProcAddr( "vkBindAccelerationStructureMemoryNV"));
   52817       vkBindBufferMemory = PFN_vkBindBufferMemory(device ? device.getProcAddr( "vkBindBufferMemory") : instance.getProcAddr( "vkBindBufferMemory"));
   52818       vkBindBufferMemory2 = PFN_vkBindBufferMemory2(device ? device.getProcAddr( "vkBindBufferMemory2") : instance.getProcAddr( "vkBindBufferMemory2"));
   52819       vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR(device ? device.getProcAddr( "vkBindBufferMemory2KHR") : instance.getProcAddr( "vkBindBufferMemory2KHR"));
   52820       vkBindImageMemory = PFN_vkBindImageMemory(device ? device.getProcAddr( "vkBindImageMemory") : instance.getProcAddr( "vkBindImageMemory"));
   52821       vkBindImageMemory2 = PFN_vkBindImageMemory2(device ? device.getProcAddr( "vkBindImageMemory2") : instance.getProcAddr( "vkBindImageMemory2"));
   52822       vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR(device ? device.getProcAddr( "vkBindImageMemory2KHR") : instance.getProcAddr( "vkBindImageMemory2KHR"));
   52823       vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT(device ? device.getProcAddr( "vkCmdBeginConditionalRenderingEXT") : instance.getProcAddr( "vkCmdBeginConditionalRenderingEXT"));
   52824       vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdBeginDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdBeginDebugUtilsLabelEXT"));
   52825       vkCmdBeginQuery = PFN_vkCmdBeginQuery(device ? device.getProcAddr( "vkCmdBeginQuery") : instance.getProcAddr( "vkCmdBeginQuery"));
   52826       vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT(device ? device.getProcAddr( "vkCmdBeginQueryIndexedEXT") : instance.getProcAddr( "vkCmdBeginQueryIndexedEXT"));
   52827       vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass(device ? device.getProcAddr( "vkCmdBeginRenderPass") : instance.getProcAddr( "vkCmdBeginRenderPass"));
   52828       vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR(device ? device.getProcAddr( "vkCmdBeginRenderPass2KHR") : instance.getProcAddr( "vkCmdBeginRenderPass2KHR"));
   52829       vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT(device ? device.getProcAddr( "vkCmdBeginTransformFeedbackEXT") : instance.getProcAddr( "vkCmdBeginTransformFeedbackEXT"));
   52830       vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets(device ? device.getProcAddr( "vkCmdBindDescriptorSets") : instance.getProcAddr( "vkCmdBindDescriptorSets"));
   52831       vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer(device ? device.getProcAddr( "vkCmdBindIndexBuffer") : instance.getProcAddr( "vkCmdBindIndexBuffer"));
   52832       vkCmdBindPipeline = PFN_vkCmdBindPipeline(device ? device.getProcAddr( "vkCmdBindPipeline") : instance.getProcAddr( "vkCmdBindPipeline"));
   52833       vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV(device ? device.getProcAddr( "vkCmdBindShadingRateImageNV") : instance.getProcAddr( "vkCmdBindShadingRateImageNV"));
   52834       vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT(device ? device.getProcAddr( "vkCmdBindTransformFeedbackBuffersEXT") : instance.getProcAddr( "vkCmdBindTransformFeedbackBuffersEXT"));
   52835       vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers(device ? device.getProcAddr( "vkCmdBindVertexBuffers") : instance.getProcAddr( "vkCmdBindVertexBuffers"));
   52836       vkCmdBlitImage = PFN_vkCmdBlitImage(device ? device.getProcAddr( "vkCmdBlitImage") : instance.getProcAddr( "vkCmdBlitImage"));
   52837       vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV(device ? device.getProcAddr( "vkCmdBuildAccelerationStructureNV") : instance.getProcAddr( "vkCmdBuildAccelerationStructureNV"));
   52838       vkCmdClearAttachments = PFN_vkCmdClearAttachments(device ? device.getProcAddr( "vkCmdClearAttachments") : instance.getProcAddr( "vkCmdClearAttachments"));
   52839       vkCmdClearColorImage = PFN_vkCmdClearColorImage(device ? device.getProcAddr( "vkCmdClearColorImage") : instance.getProcAddr( "vkCmdClearColorImage"));
   52840       vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage(device ? device.getProcAddr( "vkCmdClearDepthStencilImage") : instance.getProcAddr( "vkCmdClearDepthStencilImage"));
   52841       vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV(device ? device.getProcAddr( "vkCmdCopyAccelerationStructureNV") : instance.getProcAddr( "vkCmdCopyAccelerationStructureNV"));
   52842       vkCmdCopyBuffer = PFN_vkCmdCopyBuffer(device ? device.getProcAddr( "vkCmdCopyBuffer") : instance.getProcAddr( "vkCmdCopyBuffer"));
   52843       vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage(device ? device.getProcAddr( "vkCmdCopyBufferToImage") : instance.getProcAddr( "vkCmdCopyBufferToImage"));
   52844       vkCmdCopyImage = PFN_vkCmdCopyImage(device ? device.getProcAddr( "vkCmdCopyImage") : instance.getProcAddr( "vkCmdCopyImage"));
   52845       vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer(device ? device.getProcAddr( "vkCmdCopyImageToBuffer") : instance.getProcAddr( "vkCmdCopyImageToBuffer"));
   52846       vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults(device ? device.getProcAddr( "vkCmdCopyQueryPoolResults") : instance.getProcAddr( "vkCmdCopyQueryPoolResults"));
   52847       vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT(device ? device.getProcAddr( "vkCmdDebugMarkerBeginEXT") : instance.getProcAddr( "vkCmdDebugMarkerBeginEXT"));
   52848       vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT(device ? device.getProcAddr( "vkCmdDebugMarkerEndEXT") : instance.getProcAddr( "vkCmdDebugMarkerEndEXT"));
   52849       vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT(device ? device.getProcAddr( "vkCmdDebugMarkerInsertEXT") : instance.getProcAddr( "vkCmdDebugMarkerInsertEXT"));
   52850       vkCmdDispatch = PFN_vkCmdDispatch(device ? device.getProcAddr( "vkCmdDispatch") : instance.getProcAddr( "vkCmdDispatch"));
   52851       vkCmdDispatchBase = PFN_vkCmdDispatchBase(device ? device.getProcAddr( "vkCmdDispatchBase") : instance.getProcAddr( "vkCmdDispatchBase"));
   52852       vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR(device ? device.getProcAddr( "vkCmdDispatchBaseKHR") : instance.getProcAddr( "vkCmdDispatchBaseKHR"));
   52853       vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect(device ? device.getProcAddr( "vkCmdDispatchIndirect") : instance.getProcAddr( "vkCmdDispatchIndirect"));
   52854       vkCmdDraw = PFN_vkCmdDraw(device ? device.getProcAddr( "vkCmdDraw") : instance.getProcAddr( "vkCmdDraw"));
   52855       vkCmdDrawIndexed = PFN_vkCmdDrawIndexed(device ? device.getProcAddr( "vkCmdDrawIndexed") : instance.getProcAddr( "vkCmdDrawIndexed"));
   52856       vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect(device ? device.getProcAddr( "vkCmdDrawIndexedIndirect") : instance.getProcAddr( "vkCmdDrawIndexedIndirect"));
   52857       vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD(device ? device.getProcAddr( "vkCmdDrawIndexedIndirectCountAMD") : instance.getProcAddr( "vkCmdDrawIndexedIndirectCountAMD"));
   52858       vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR(device ? device.getProcAddr( "vkCmdDrawIndexedIndirectCountKHR") : instance.getProcAddr( "vkCmdDrawIndexedIndirectCountKHR"));
   52859       vkCmdDrawIndirect = PFN_vkCmdDrawIndirect(device ? device.getProcAddr( "vkCmdDrawIndirect") : instance.getProcAddr( "vkCmdDrawIndirect"));
   52860       vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT(device ? device.getProcAddr( "vkCmdDrawIndirectByteCountEXT") : instance.getProcAddr( "vkCmdDrawIndirectByteCountEXT"));
   52861       vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD(device ? device.getProcAddr( "vkCmdDrawIndirectCountAMD") : instance.getProcAddr( "vkCmdDrawIndirectCountAMD"));
   52862       vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR(device ? device.getProcAddr( "vkCmdDrawIndirectCountKHR") : instance.getProcAddr( "vkCmdDrawIndirectCountKHR"));
   52863       vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV(device ? device.getProcAddr( "vkCmdDrawMeshTasksIndirectCountNV") : instance.getProcAddr( "vkCmdDrawMeshTasksIndirectCountNV"));
   52864       vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV(device ? device.getProcAddr( "vkCmdDrawMeshTasksIndirectNV") : instance.getProcAddr( "vkCmdDrawMeshTasksIndirectNV"));
   52865       vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV(device ? device.getProcAddr( "vkCmdDrawMeshTasksNV") : instance.getProcAddr( "vkCmdDrawMeshTasksNV"));
   52866       vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT(device ? device.getProcAddr( "vkCmdEndConditionalRenderingEXT") : instance.getProcAddr( "vkCmdEndConditionalRenderingEXT"));
   52867       vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdEndDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdEndDebugUtilsLabelEXT"));
   52868       vkCmdEndQuery = PFN_vkCmdEndQuery(device ? device.getProcAddr( "vkCmdEndQuery") : instance.getProcAddr( "vkCmdEndQuery"));
   52869       vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT(device ? device.getProcAddr( "vkCmdEndQueryIndexedEXT") : instance.getProcAddr( "vkCmdEndQueryIndexedEXT"));
   52870       vkCmdEndRenderPass = PFN_vkCmdEndRenderPass(device ? device.getProcAddr( "vkCmdEndRenderPass") : instance.getProcAddr( "vkCmdEndRenderPass"));
   52871       vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR(device ? device.getProcAddr( "vkCmdEndRenderPass2KHR") : instance.getProcAddr( "vkCmdEndRenderPass2KHR"));
   52872       vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT(device ? device.getProcAddr( "vkCmdEndTransformFeedbackEXT") : instance.getProcAddr( "vkCmdEndTransformFeedbackEXT"));
   52873       vkCmdExecuteCommands = PFN_vkCmdExecuteCommands(device ? device.getProcAddr( "vkCmdExecuteCommands") : instance.getProcAddr( "vkCmdExecuteCommands"));
   52874       vkCmdFillBuffer = PFN_vkCmdFillBuffer(device ? device.getProcAddr( "vkCmdFillBuffer") : instance.getProcAddr( "vkCmdFillBuffer"));
   52875       vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdInsertDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdInsertDebugUtilsLabelEXT"));
   52876       vkCmdNextSubpass = PFN_vkCmdNextSubpass(device ? device.getProcAddr( "vkCmdNextSubpass") : instance.getProcAddr( "vkCmdNextSubpass"));
   52877       vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR(device ? device.getProcAddr( "vkCmdNextSubpass2KHR") : instance.getProcAddr( "vkCmdNextSubpass2KHR"));
   52878       vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier(device ? device.getProcAddr( "vkCmdPipelineBarrier") : instance.getProcAddr( "vkCmdPipelineBarrier"));
   52879       vkCmdProcessCommandsNVX = PFN_vkCmdProcessCommandsNVX(device ? device.getProcAddr( "vkCmdProcessCommandsNVX") : instance.getProcAddr( "vkCmdProcessCommandsNVX"));
   52880       vkCmdPushConstants = PFN_vkCmdPushConstants(device ? device.getProcAddr( "vkCmdPushConstants") : instance.getProcAddr( "vkCmdPushConstants"));
   52881       vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR(device ? device.getProcAddr( "vkCmdPushDescriptorSetKHR") : instance.getProcAddr( "vkCmdPushDescriptorSetKHR"));
   52882       vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR(device ? device.getProcAddr( "vkCmdPushDescriptorSetWithTemplateKHR") : instance.getProcAddr( "vkCmdPushDescriptorSetWithTemplateKHR"));
   52883       vkCmdReserveSpaceForCommandsNVX = PFN_vkCmdReserveSpaceForCommandsNVX(device ? device.getProcAddr( "vkCmdReserveSpaceForCommandsNVX") : instance.getProcAddr( "vkCmdReserveSpaceForCommandsNVX"));
   52884       vkCmdResetEvent = PFN_vkCmdResetEvent(device ? device.getProcAddr( "vkCmdResetEvent") : instance.getProcAddr( "vkCmdResetEvent"));
   52885       vkCmdResetQueryPool = PFN_vkCmdResetQueryPool(device ? device.getProcAddr( "vkCmdResetQueryPool") : instance.getProcAddr( "vkCmdResetQueryPool"));
   52886       vkCmdResolveImage = PFN_vkCmdResolveImage(device ? device.getProcAddr( "vkCmdResolveImage") : instance.getProcAddr( "vkCmdResolveImage"));
   52887       vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants(device ? device.getProcAddr( "vkCmdSetBlendConstants") : instance.getProcAddr( "vkCmdSetBlendConstants"));
   52888       vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV(device ? device.getProcAddr( "vkCmdSetCheckpointNV") : instance.getProcAddr( "vkCmdSetCheckpointNV"));
   52889       vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV(device ? device.getProcAddr( "vkCmdSetCoarseSampleOrderNV") : instance.getProcAddr( "vkCmdSetCoarseSampleOrderNV"));
   52890       vkCmdSetDepthBias = PFN_vkCmdSetDepthBias(device ? device.getProcAddr( "vkCmdSetDepthBias") : instance.getProcAddr( "vkCmdSetDepthBias"));
   52891       vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds(device ? device.getProcAddr( "vkCmdSetDepthBounds") : instance.getProcAddr( "vkCmdSetDepthBounds"));
   52892       vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask(device ? device.getProcAddr( "vkCmdSetDeviceMask") : instance.getProcAddr( "vkCmdSetDeviceMask"));
   52893       vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR(device ? device.getProcAddr( "vkCmdSetDeviceMaskKHR") : instance.getProcAddr( "vkCmdSetDeviceMaskKHR"));
   52894       vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT(device ? device.getProcAddr( "vkCmdSetDiscardRectangleEXT") : instance.getProcAddr( "vkCmdSetDiscardRectangleEXT"));
   52895       vkCmdSetEvent = PFN_vkCmdSetEvent(device ? device.getProcAddr( "vkCmdSetEvent") : instance.getProcAddr( "vkCmdSetEvent"));
   52896       vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV(device ? device.getProcAddr( "vkCmdSetExclusiveScissorNV") : instance.getProcAddr( "vkCmdSetExclusiveScissorNV"));
   52897       vkCmdSetLineWidth = PFN_vkCmdSetLineWidth(device ? device.getProcAddr( "vkCmdSetLineWidth") : instance.getProcAddr( "vkCmdSetLineWidth"));
   52898       vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT(device ? device.getProcAddr( "vkCmdSetSampleLocationsEXT") : instance.getProcAddr( "vkCmdSetSampleLocationsEXT"));
   52899       vkCmdSetScissor = PFN_vkCmdSetScissor(device ? device.getProcAddr( "vkCmdSetScissor") : instance.getProcAddr( "vkCmdSetScissor"));
   52900       vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask(device ? device.getProcAddr( "vkCmdSetStencilCompareMask") : instance.getProcAddr( "vkCmdSetStencilCompareMask"));
   52901       vkCmdSetStencilReference = PFN_vkCmdSetStencilReference(device ? device.getProcAddr( "vkCmdSetStencilReference") : instance.getProcAddr( "vkCmdSetStencilReference"));
   52902       vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask(device ? device.getProcAddr( "vkCmdSetStencilWriteMask") : instance.getProcAddr( "vkCmdSetStencilWriteMask"));
   52903       vkCmdSetViewport = PFN_vkCmdSetViewport(device ? device.getProcAddr( "vkCmdSetViewport") : instance.getProcAddr( "vkCmdSetViewport"));
   52904       vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV(device ? device.getProcAddr( "vkCmdSetViewportShadingRatePaletteNV") : instance.getProcAddr( "vkCmdSetViewportShadingRatePaletteNV"));
   52905       vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV(device ? device.getProcAddr( "vkCmdSetViewportWScalingNV") : instance.getProcAddr( "vkCmdSetViewportWScalingNV"));
   52906       vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV(device ? device.getProcAddr( "vkCmdTraceRaysNV") : instance.getProcAddr( "vkCmdTraceRaysNV"));
   52907       vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer(device ? device.getProcAddr( "vkCmdUpdateBuffer") : instance.getProcAddr( "vkCmdUpdateBuffer"));
   52908       vkCmdWaitEvents = PFN_vkCmdWaitEvents(device ? device.getProcAddr( "vkCmdWaitEvents") : instance.getProcAddr( "vkCmdWaitEvents"));
   52909       vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV(device ? device.getProcAddr( "vkCmdWriteAccelerationStructuresPropertiesNV") : instance.getProcAddr( "vkCmdWriteAccelerationStructuresPropertiesNV"));
   52910       vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD(device ? device.getProcAddr( "vkCmdWriteBufferMarkerAMD") : instance.getProcAddr( "vkCmdWriteBufferMarkerAMD"));
   52911       vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp(device ? device.getProcAddr( "vkCmdWriteTimestamp") : instance.getProcAddr( "vkCmdWriteTimestamp"));
   52912       vkCompileDeferredNV = PFN_vkCompileDeferredNV(device ? device.getProcAddr( "vkCompileDeferredNV") : instance.getProcAddr( "vkCompileDeferredNV"));
   52913       vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV(device ? device.getProcAddr( "vkCreateAccelerationStructureNV") : instance.getProcAddr( "vkCreateAccelerationStructureNV"));
   52914 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   52915       vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR(instance.getProcAddr( "vkCreateAndroidSurfaceKHR"));
   52916 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
   52917       vkCreateBuffer = PFN_vkCreateBuffer(device ? device.getProcAddr( "vkCreateBuffer") : instance.getProcAddr( "vkCreateBuffer"));
   52918       vkCreateBufferView = PFN_vkCreateBufferView(device ? device.getProcAddr( "vkCreateBufferView") : instance.getProcAddr( "vkCreateBufferView"));
   52919       vkCreateCommandPool = PFN_vkCreateCommandPool(device ? device.getProcAddr( "vkCreateCommandPool") : instance.getProcAddr( "vkCreateCommandPool"));
   52920       vkCreateComputePipelines = PFN_vkCreateComputePipelines(device ? device.getProcAddr( "vkCreateComputePipelines") : instance.getProcAddr( "vkCreateComputePipelines"));
   52921       vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT(instance.getProcAddr( "vkCreateDebugReportCallbackEXT"));
   52922       vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT(instance.getProcAddr( "vkCreateDebugUtilsMessengerEXT"));
   52923       vkCreateDescriptorPool = PFN_vkCreateDescriptorPool(device ? device.getProcAddr( "vkCreateDescriptorPool") : instance.getProcAddr( "vkCreateDescriptorPool"));
   52924       vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout(device ? device.getProcAddr( "vkCreateDescriptorSetLayout") : instance.getProcAddr( "vkCreateDescriptorSetLayout"));
   52925       vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate(device ? device.getProcAddr( "vkCreateDescriptorUpdateTemplate") : instance.getProcAddr( "vkCreateDescriptorUpdateTemplate"));
   52926       vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR(device ? device.getProcAddr( "vkCreateDescriptorUpdateTemplateKHR") : instance.getProcAddr( "vkCreateDescriptorUpdateTemplateKHR"));
   52927       vkCreateDevice = PFN_vkCreateDevice(instance.getProcAddr( "vkCreateDevice"));
   52928       vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR(instance.getProcAddr( "vkCreateDisplayModeKHR"));
   52929       vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR(instance.getProcAddr( "vkCreateDisplayPlaneSurfaceKHR"));
   52930       vkCreateEvent = PFN_vkCreateEvent(device ? device.getProcAddr( "vkCreateEvent") : instance.getProcAddr( "vkCreateEvent"));
   52931       vkCreateFence = PFN_vkCreateFence(device ? device.getProcAddr( "vkCreateFence") : instance.getProcAddr( "vkCreateFence"));
   52932       vkCreateFramebuffer = PFN_vkCreateFramebuffer(device ? device.getProcAddr( "vkCreateFramebuffer") : instance.getProcAddr( "vkCreateFramebuffer"));
   52933       vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines(device ? device.getProcAddr( "vkCreateGraphicsPipelines") : instance.getProcAddr( "vkCreateGraphicsPipelines"));
   52934 #ifdef VK_USE_PLATFORM_IOS_MVK
   52935       vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK(instance.getProcAddr( "vkCreateIOSSurfaceMVK"));
   52936 #endif /*VK_USE_PLATFORM_IOS_MVK*/
   52937       vkCreateImage = PFN_vkCreateImage(device ? device.getProcAddr( "vkCreateImage") : instance.getProcAddr( "vkCreateImage"));
   52938 #ifdef VK_USE_PLATFORM_FUCHSIA_FUCHSIA
   52939       vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA(instance.getProcAddr( "vkCreateImagePipeSurfaceFUCHSIA"));
   52940 #endif /*VK_USE_PLATFORM_FUCHSIA_FUCHSIA*/
   52941       vkCreateImageView = PFN_vkCreateImageView(device ? device.getProcAddr( "vkCreateImageView") : instance.getProcAddr( "vkCreateImageView"));
   52942       vkCreateIndirectCommandsLayoutNVX = PFN_vkCreateIndirectCommandsLayoutNVX(device ? device.getProcAddr( "vkCreateIndirectCommandsLayoutNVX") : instance.getProcAddr( "vkCreateIndirectCommandsLayoutNVX"));
   52943       vkCreateInstance = PFN_vkCreateInstance(instance.getProcAddr( "vkCreateInstance"));
   52944 #ifdef VK_USE_PLATFORM_MACOS_MVK
   52945       vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK(instance.getProcAddr( "vkCreateMacOSSurfaceMVK"));
   52946 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
   52947       vkCreateObjectTableNVX = PFN_vkCreateObjectTableNVX(device ? device.getProcAddr( "vkCreateObjectTableNVX") : instance.getProcAddr( "vkCreateObjectTableNVX"));
   52948       vkCreatePipelineCache = PFN_vkCreatePipelineCache(device ? device.getProcAddr( "vkCreatePipelineCache") : instance.getProcAddr( "vkCreatePipelineCache"));
   52949       vkCreatePipelineLayout = PFN_vkCreatePipelineLayout(device ? device.getProcAddr( "vkCreatePipelineLayout") : instance.getProcAddr( "vkCreatePipelineLayout"));
   52950       vkCreateQueryPool = PFN_vkCreateQueryPool(device ? device.getProcAddr( "vkCreateQueryPool") : instance.getProcAddr( "vkCreateQueryPool"));
   52951       vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV(device ? device.getProcAddr( "vkCreateRayTracingPipelinesNV") : instance.getProcAddr( "vkCreateRayTracingPipelinesNV"));
   52952       vkCreateRenderPass = PFN_vkCreateRenderPass(device ? device.getProcAddr( "vkCreateRenderPass") : instance.getProcAddr( "vkCreateRenderPass"));
   52953       vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR(device ? device.getProcAddr( "vkCreateRenderPass2KHR") : instance.getProcAddr( "vkCreateRenderPass2KHR"));
   52954       vkCreateSampler = PFN_vkCreateSampler(device ? device.getProcAddr( "vkCreateSampler") : instance.getProcAddr( "vkCreateSampler"));
   52955       vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion(device ? device.getProcAddr( "vkCreateSamplerYcbcrConversion") : instance.getProcAddr( "vkCreateSamplerYcbcrConversion"));
   52956       vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR(device ? device.getProcAddr( "vkCreateSamplerYcbcrConversionKHR") : instance.getProcAddr( "vkCreateSamplerYcbcrConversionKHR"));
   52957       vkCreateSemaphore = PFN_vkCreateSemaphore(device ? device.getProcAddr( "vkCreateSemaphore") : instance.getProcAddr( "vkCreateSemaphore"));
   52958       vkCreateShaderModule = PFN_vkCreateShaderModule(device ? device.getProcAddr( "vkCreateShaderModule") : instance.getProcAddr( "vkCreateShaderModule"));
   52959       vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR(device ? device.getProcAddr( "vkCreateSharedSwapchainsKHR") : instance.getProcAddr( "vkCreateSharedSwapchainsKHR"));
   52960       vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR(device ? device.getProcAddr( "vkCreateSwapchainKHR") : instance.getProcAddr( "vkCreateSwapchainKHR"));
   52961       vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT(device ? device.getProcAddr( "vkCreateValidationCacheEXT") : instance.getProcAddr( "vkCreateValidationCacheEXT"));
   52962 #ifdef VK_USE_PLATFORM_VI_NN
   52963       vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN(instance.getProcAddr( "vkCreateViSurfaceNN"));
   52964 #endif /*VK_USE_PLATFORM_VI_NN*/
   52965 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   52966       vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR(instance.getProcAddr( "vkCreateWaylandSurfaceKHR"));
   52967 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   52968 #ifdef VK_USE_PLATFORM_WIN32_KHR
   52969       vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR(instance.getProcAddr( "vkCreateWin32SurfaceKHR"));
   52970 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   52971 #ifdef VK_USE_PLATFORM_XCB_KHR
   52972       vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR(instance.getProcAddr( "vkCreateXcbSurfaceKHR"));
   52973 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   52974 #ifdef VK_USE_PLATFORM_XLIB_KHR
   52975       vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR(instance.getProcAddr( "vkCreateXlibSurfaceKHR"));
   52976 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   52977       vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT(device ? device.getProcAddr( "vkDebugMarkerSetObjectNameEXT") : instance.getProcAddr( "vkDebugMarkerSetObjectNameEXT"));
   52978       vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT(device ? device.getProcAddr( "vkDebugMarkerSetObjectTagEXT") : instance.getProcAddr( "vkDebugMarkerSetObjectTagEXT"));
   52979       vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT(instance.getProcAddr( "vkDebugReportMessageEXT"));
   52980       vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV(device ? device.getProcAddr( "vkDestroyAccelerationStructureNV") : instance.getProcAddr( "vkDestroyAccelerationStructureNV"));
   52981       vkDestroyBuffer = PFN_vkDestroyBuffer(device ? device.getProcAddr( "vkDestroyBuffer") : instance.getProcAddr( "vkDestroyBuffer"));
   52982       vkDestroyBufferView = PFN_vkDestroyBufferView(device ? device.getProcAddr( "vkDestroyBufferView") : instance.getProcAddr( "vkDestroyBufferView"));
   52983       vkDestroyCommandPool = PFN_vkDestroyCommandPool(device ? device.getProcAddr( "vkDestroyCommandPool") : instance.getProcAddr( "vkDestroyCommandPool"));
   52984       vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT(instance.getProcAddr( "vkDestroyDebugReportCallbackEXT"));
   52985       vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT(instance.getProcAddr( "vkDestroyDebugUtilsMessengerEXT"));
   52986       vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool(device ? device.getProcAddr( "vkDestroyDescriptorPool") : instance.getProcAddr( "vkDestroyDescriptorPool"));
   52987       vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout(device ? device.getProcAddr( "vkDestroyDescriptorSetLayout") : instance.getProcAddr( "vkDestroyDescriptorSetLayout"));
   52988       vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate(device ? device.getProcAddr( "vkDestroyDescriptorUpdateTemplate") : instance.getProcAddr( "vkDestroyDescriptorUpdateTemplate"));
   52989       vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR(device ? device.getProcAddr( "vkDestroyDescriptorUpdateTemplateKHR") : instance.getProcAddr( "vkDestroyDescriptorUpdateTemplateKHR"));
   52990       vkDestroyDevice = PFN_vkDestroyDevice(device ? device.getProcAddr( "vkDestroyDevice") : instance.getProcAddr( "vkDestroyDevice"));
   52991       vkDestroyEvent = PFN_vkDestroyEvent(device ? device.getProcAddr( "vkDestroyEvent") : instance.getProcAddr( "vkDestroyEvent"));
   52992       vkDestroyFence = PFN_vkDestroyFence(device ? device.getProcAddr( "vkDestroyFence") : instance.getProcAddr( "vkDestroyFence"));
   52993       vkDestroyFramebuffer = PFN_vkDestroyFramebuffer(device ? device.getProcAddr( "vkDestroyFramebuffer") : instance.getProcAddr( "vkDestroyFramebuffer"));
   52994       vkDestroyImage = PFN_vkDestroyImage(device ? device.getProcAddr( "vkDestroyImage") : instance.getProcAddr( "vkDestroyImage"));
   52995       vkDestroyImageView = PFN_vkDestroyImageView(device ? device.getProcAddr( "vkDestroyImageView") : instance.getProcAddr( "vkDestroyImageView"));
   52996       vkDestroyIndirectCommandsLayoutNVX = PFN_vkDestroyIndirectCommandsLayoutNVX(device ? device.getProcAddr( "vkDestroyIndirectCommandsLayoutNVX") : instance.getProcAddr( "vkDestroyIndirectCommandsLayoutNVX"));
   52997       vkDestroyInstance = PFN_vkDestroyInstance(instance.getProcAddr( "vkDestroyInstance"));
   52998       vkDestroyObjectTableNVX = PFN_vkDestroyObjectTableNVX(device ? device.getProcAddr( "vkDestroyObjectTableNVX") : instance.getProcAddr( "vkDestroyObjectTableNVX"));
   52999       vkDestroyPipeline = PFN_vkDestroyPipeline(device ? device.getProcAddr( "vkDestroyPipeline") : instance.getProcAddr( "vkDestroyPipeline"));
   53000       vkDestroyPipelineCache = PFN_vkDestroyPipelineCache(device ? device.getProcAddr( "vkDestroyPipelineCache") : instance.getProcAddr( "vkDestroyPipelineCache"));
   53001       vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout(device ? device.getProcAddr( "vkDestroyPipelineLayout") : instance.getProcAddr( "vkDestroyPipelineLayout"));
   53002       vkDestroyQueryPool = PFN_vkDestroyQueryPool(device ? device.getProcAddr( "vkDestroyQueryPool") : instance.getProcAddr( "vkDestroyQueryPool"));
   53003       vkDestroyRenderPass = PFN_vkDestroyRenderPass(device ? device.getProcAddr( "vkDestroyRenderPass") : instance.getProcAddr( "vkDestroyRenderPass"));
   53004       vkDestroySampler = PFN_vkDestroySampler(device ? device.getProcAddr( "vkDestroySampler") : instance.getProcAddr( "vkDestroySampler"));
   53005       vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion(device ? device.getProcAddr( "vkDestroySamplerYcbcrConversion") : instance.getProcAddr( "vkDestroySamplerYcbcrConversion"));
   53006       vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR(device ? device.getProcAddr( "vkDestroySamplerYcbcrConversionKHR") : instance.getProcAddr( "vkDestroySamplerYcbcrConversionKHR"));
   53007       vkDestroySemaphore = PFN_vkDestroySemaphore(device ? device.getProcAddr( "vkDestroySemaphore") : instance.getProcAddr( "vkDestroySemaphore"));
   53008       vkDestroyShaderModule = PFN_vkDestroyShaderModule(device ? device.getProcAddr( "vkDestroyShaderModule") : instance.getProcAddr( "vkDestroyShaderModule"));
   53009       vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR(instance.getProcAddr( "vkDestroySurfaceKHR"));
   53010       vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR(device ? device.getProcAddr( "vkDestroySwapchainKHR") : instance.getProcAddr( "vkDestroySwapchainKHR"));
   53011       vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT(device ? device.getProcAddr( "vkDestroyValidationCacheEXT") : instance.getProcAddr( "vkDestroyValidationCacheEXT"));
   53012       vkDeviceWaitIdle = PFN_vkDeviceWaitIdle(device ? device.getProcAddr( "vkDeviceWaitIdle") : instance.getProcAddr( "vkDeviceWaitIdle"));
   53013       vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT(device ? device.getProcAddr( "vkDisplayPowerControlEXT") : instance.getProcAddr( "vkDisplayPowerControlEXT"));
   53014       vkEndCommandBuffer = PFN_vkEndCommandBuffer(device ? device.getProcAddr( "vkEndCommandBuffer") : instance.getProcAddr( "vkEndCommandBuffer"));
   53015       vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties(instance.getProcAddr( "vkEnumerateDeviceExtensionProperties"));
   53016       vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties(instance.getProcAddr( "vkEnumerateDeviceLayerProperties"));
   53017       vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties(instance.getProcAddr( "vkEnumerateInstanceExtensionProperties"));
   53018       vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties(instance.getProcAddr( "vkEnumerateInstanceLayerProperties"));
   53019       vkEnumerateInstanceVersion = PFN_vkEnumerateInstanceVersion(instance.getProcAddr( "vkEnumerateInstanceVersion"));
   53020       vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups(instance.getProcAddr( "vkEnumeratePhysicalDeviceGroups"));
   53021       vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR(instance.getProcAddr( "vkEnumeratePhysicalDeviceGroupsKHR"));
   53022       vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices(instance.getProcAddr( "vkEnumeratePhysicalDevices"));
   53023       vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges(device ? device.getProcAddr( "vkFlushMappedMemoryRanges") : instance.getProcAddr( "vkFlushMappedMemoryRanges"));
   53024       vkFreeCommandBuffers = PFN_vkFreeCommandBuffers(device ? device.getProcAddr( "vkFreeCommandBuffers") : instance.getProcAddr( "vkFreeCommandBuffers"));
   53025       vkFreeDescriptorSets = PFN_vkFreeDescriptorSets(device ? device.getProcAddr( "vkFreeDescriptorSets") : instance.getProcAddr( "vkFreeDescriptorSets"));
   53026       vkFreeMemory = PFN_vkFreeMemory(device ? device.getProcAddr( "vkFreeMemory") : instance.getProcAddr( "vkFreeMemory"));
   53027       vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV(device ? device.getProcAddr( "vkGetAccelerationStructureHandleNV") : instance.getProcAddr( "vkGetAccelerationStructureHandleNV"));
   53028       vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV(device ? device.getProcAddr( "vkGetAccelerationStructureMemoryRequirementsNV") : instance.getProcAddr( "vkGetAccelerationStructureMemoryRequirementsNV"));
   53029 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   53030       vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID(device ? device.getProcAddr( "vkGetAndroidHardwareBufferPropertiesANDROID") : instance.getProcAddr( "vkGetAndroidHardwareBufferPropertiesANDROID"));
   53031 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   53032       vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements(device ? device.getProcAddr( "vkGetBufferMemoryRequirements") : instance.getProcAddr( "vkGetBufferMemoryRequirements"));
   53033       vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2(device ? device.getProcAddr( "vkGetBufferMemoryRequirements2") : instance.getProcAddr( "vkGetBufferMemoryRequirements2"));
   53034       vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetBufferMemoryRequirements2KHR") : instance.getProcAddr( "vkGetBufferMemoryRequirements2KHR"));
   53035       vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT(device ? device.getProcAddr( "vkGetCalibratedTimestampsEXT") : instance.getProcAddr( "vkGetCalibratedTimestampsEXT"));
   53036       vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport(device ? device.getProcAddr( "vkGetDescriptorSetLayoutSupport") : instance.getProcAddr( "vkGetDescriptorSetLayoutSupport"));
   53037       vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR(device ? device.getProcAddr( "vkGetDescriptorSetLayoutSupportKHR") : instance.getProcAddr( "vkGetDescriptorSetLayoutSupportKHR"));
   53038       vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures(device ? device.getProcAddr( "vkGetDeviceGroupPeerMemoryFeatures") : instance.getProcAddr( "vkGetDeviceGroupPeerMemoryFeatures"));
   53039       vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR(device ? device.getProcAddr( "vkGetDeviceGroupPeerMemoryFeaturesKHR") : instance.getProcAddr( "vkGetDeviceGroupPeerMemoryFeaturesKHR"));
   53040       vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR(device ? device.getProcAddr( "vkGetDeviceGroupPresentCapabilitiesKHR") : instance.getProcAddr( "vkGetDeviceGroupPresentCapabilitiesKHR"));
   53041       vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR(device ? device.getProcAddr( "vkGetDeviceGroupSurfacePresentModesKHR") : instance.getProcAddr( "vkGetDeviceGroupSurfacePresentModesKHR"));
   53042       vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment(device ? device.getProcAddr( "vkGetDeviceMemoryCommitment") : instance.getProcAddr( "vkGetDeviceMemoryCommitment"));
   53043       vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr(device ? device.getProcAddr( "vkGetDeviceProcAddr") : instance.getProcAddr( "vkGetDeviceProcAddr"));
   53044       vkGetDeviceQueue = PFN_vkGetDeviceQueue(device ? device.getProcAddr( "vkGetDeviceQueue") : instance.getProcAddr( "vkGetDeviceQueue"));
   53045       vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2(device ? device.getProcAddr( "vkGetDeviceQueue2") : instance.getProcAddr( "vkGetDeviceQueue2"));
   53046       vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR(instance.getProcAddr( "vkGetDisplayModeProperties2KHR"));
   53047       vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR(instance.getProcAddr( "vkGetDisplayModePropertiesKHR"));
   53048       vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR(instance.getProcAddr( "vkGetDisplayPlaneCapabilities2KHR"));
   53049       vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR(instance.getProcAddr( "vkGetDisplayPlaneCapabilitiesKHR"));
   53050       vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR(instance.getProcAddr( "vkGetDisplayPlaneSupportedDisplaysKHR"));
   53051       vkGetEventStatus = PFN_vkGetEventStatus(device ? device.getProcAddr( "vkGetEventStatus") : instance.getProcAddr( "vkGetEventStatus"));
   53052       vkGetFenceFdKHR = PFN_vkGetFenceFdKHR(device ? device.getProcAddr( "vkGetFenceFdKHR") : instance.getProcAddr( "vkGetFenceFdKHR"));
   53053       vkGetFenceStatus = PFN_vkGetFenceStatus(device ? device.getProcAddr( "vkGetFenceStatus") : instance.getProcAddr( "vkGetFenceStatus"));
   53054 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53055       vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR(device ? device.getProcAddr( "vkGetFenceWin32HandleKHR") : instance.getProcAddr( "vkGetFenceWin32HandleKHR"));
   53056 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53057       vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT(device ? device.getProcAddr( "vkGetImageDrmFormatModifierPropertiesEXT") : instance.getProcAddr( "vkGetImageDrmFormatModifierPropertiesEXT"));
   53058       vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements(device ? device.getProcAddr( "vkGetImageMemoryRequirements") : instance.getProcAddr( "vkGetImageMemoryRequirements"));
   53059       vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2(device ? device.getProcAddr( "vkGetImageMemoryRequirements2") : instance.getProcAddr( "vkGetImageMemoryRequirements2"));
   53060       vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetImageMemoryRequirements2KHR") : instance.getProcAddr( "vkGetImageMemoryRequirements2KHR"));
   53061       vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements"));
   53062       vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements2") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements2"));
   53063       vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements2KHR") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements2KHR"));
   53064       vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout(device ? device.getProcAddr( "vkGetImageSubresourceLayout") : instance.getProcAddr( "vkGetImageSubresourceLayout"));
   53065       vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr(instance.getProcAddr( "vkGetInstanceProcAddr"));
   53066 #ifdef VK_USE_PLATFORM_ANDROID_ANDROID
   53067       vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID(device ? device.getProcAddr( "vkGetMemoryAndroidHardwareBufferANDROID") : instance.getProcAddr( "vkGetMemoryAndroidHardwareBufferANDROID"));
   53068 #endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
   53069       vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR(device ? device.getProcAddr( "vkGetMemoryFdKHR") : instance.getProcAddr( "vkGetMemoryFdKHR"));
   53070       vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR(device ? device.getProcAddr( "vkGetMemoryFdPropertiesKHR") : instance.getProcAddr( "vkGetMemoryFdPropertiesKHR"));
   53071       vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT(device ? device.getProcAddr( "vkGetMemoryHostPointerPropertiesEXT") : instance.getProcAddr( "vkGetMemoryHostPointerPropertiesEXT"));
   53072 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53073       vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR(device ? device.getProcAddr( "vkGetMemoryWin32HandleKHR") : instance.getProcAddr( "vkGetMemoryWin32HandleKHR"));
   53074 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53075 #ifdef VK_USE_PLATFORM_WIN32_NV
   53076       vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV(device ? device.getProcAddr( "vkGetMemoryWin32HandleNV") : instance.getProcAddr( "vkGetMemoryWin32HandleNV"));
   53077 #endif /*VK_USE_PLATFORM_WIN32_NV*/
   53078 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53079       vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR(device ? device.getProcAddr( "vkGetMemoryWin32HandlePropertiesKHR") : instance.getProcAddr( "vkGetMemoryWin32HandlePropertiesKHR"));
   53080 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53081       vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE(device ? device.getProcAddr( "vkGetPastPresentationTimingGOOGLE") : instance.getProcAddr( "vkGetPastPresentationTimingGOOGLE"));
   53082       vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(instance.getProcAddr( "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"));
   53083       vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"));
   53084       vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"));
   53085       vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceDisplayProperties2KHR"));
   53086       vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceDisplayPropertiesKHR"));
   53087       vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties(instance.getProcAddr( "vkGetPhysicalDeviceExternalBufferProperties"));
   53088       vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceExternalBufferPropertiesKHR"));
   53089       vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties(instance.getProcAddr( "vkGetPhysicalDeviceExternalFenceProperties"));
   53090       vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceExternalFencePropertiesKHR"));
   53091       vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(instance.getProcAddr( "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"));
   53092       vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties(instance.getProcAddr( "vkGetPhysicalDeviceExternalSemaphoreProperties"));
   53093       vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"));
   53094       vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures(instance.getProcAddr( "vkGetPhysicalDeviceFeatures"));
   53095       vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2(instance.getProcAddr( "vkGetPhysicalDeviceFeatures2"));
   53096       vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR(instance.getProcAddr( "vkGetPhysicalDeviceFeatures2KHR"));
   53097       vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties(instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties"));
   53098       vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2(instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties2"));
   53099       vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties2KHR"));
   53100       vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(instance.getProcAddr( "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"));
   53101       vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties(instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties"));
   53102       vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2(instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2"));
   53103       vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2KHR"));
   53104       vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties(instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties"));
   53105       vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2(instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2"));
   53106       vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2KHR"));
   53107       vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT(instance.getProcAddr( "vkGetPhysicalDeviceMultisamplePropertiesEXT"));
   53108       vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR(instance.getProcAddr( "vkGetPhysicalDevicePresentRectanglesKHR"));
   53109       vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties(instance.getProcAddr( "vkGetPhysicalDeviceProperties"));
   53110       vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2(instance.getProcAddr( "vkGetPhysicalDeviceProperties2"));
   53111       vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceProperties2KHR"));
   53112       vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties(instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties"));
   53113       vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2(instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2"));
   53114       vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2KHR"));
   53115       vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties(instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties"));
   53116       vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2(instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2"));
   53117       vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"));
   53118       vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2EXT"));
   53119       vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2KHR"));
   53120       vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
   53121       vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceFormats2KHR"));
   53122       vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceFormatsKHR"));
   53123       vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfacePresentModesKHR"));
   53124       vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR(instance.getProcAddr( "vkGetPhysicalDeviceSurfaceSupportKHR"));
   53125 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   53126       vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR(instance.getProcAddr( "vkGetPhysicalDeviceWaylandPresentationSupportKHR"));
   53127 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
   53128 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53129       vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR(instance.getProcAddr( "vkGetPhysicalDeviceWin32PresentationSupportKHR"));
   53130 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53131 #ifdef VK_USE_PLATFORM_XCB_KHR
   53132       vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR(instance.getProcAddr( "vkGetPhysicalDeviceXcbPresentationSupportKHR"));
   53133 #endif /*VK_USE_PLATFORM_XCB_KHR*/
   53134 #ifdef VK_USE_PLATFORM_XLIB_KHR
   53135       vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR(instance.getProcAddr( "vkGetPhysicalDeviceXlibPresentationSupportKHR"));
   53136 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
   53137       vkGetPipelineCacheData = PFN_vkGetPipelineCacheData(device ? device.getProcAddr( "vkGetPipelineCacheData") : instance.getProcAddr( "vkGetPipelineCacheData"));
   53138       vkGetQueryPoolResults = PFN_vkGetQueryPoolResults(device ? device.getProcAddr( "vkGetQueryPoolResults") : instance.getProcAddr( "vkGetQueryPoolResults"));
   53139       vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV(device ? device.getProcAddr( "vkGetQueueCheckpointDataNV") : instance.getProcAddr( "vkGetQueueCheckpointDataNV"));
   53140 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
   53141       vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT(instance.getProcAddr( "vkGetRandROutputDisplayEXT"));
   53142 #endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
   53143       vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV(device ? device.getProcAddr( "vkGetRayTracingShaderGroupHandlesNV") : instance.getProcAddr( "vkGetRayTracingShaderGroupHandlesNV"));
   53144       vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE(device ? device.getProcAddr( "vkGetRefreshCycleDurationGOOGLE") : instance.getProcAddr( "vkGetRefreshCycleDurationGOOGLE"));
   53145       vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity(device ? device.getProcAddr( "vkGetRenderAreaGranularity") : instance.getProcAddr( "vkGetRenderAreaGranularity"));
   53146       vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR(device ? device.getProcAddr( "vkGetSemaphoreFdKHR") : instance.getProcAddr( "vkGetSemaphoreFdKHR"));
   53147 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53148       vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR(device ? device.getProcAddr( "vkGetSemaphoreWin32HandleKHR") : instance.getProcAddr( "vkGetSemaphoreWin32HandleKHR"));
   53149 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53150       vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD(device ? device.getProcAddr( "vkGetShaderInfoAMD") : instance.getProcAddr( "vkGetShaderInfoAMD"));
   53151       vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT(device ? device.getProcAddr( "vkGetSwapchainCounterEXT") : instance.getProcAddr( "vkGetSwapchainCounterEXT"));
   53152       vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR(device ? device.getProcAddr( "vkGetSwapchainImagesKHR") : instance.getProcAddr( "vkGetSwapchainImagesKHR"));
   53153       vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR(device ? device.getProcAddr( "vkGetSwapchainStatusKHR") : instance.getProcAddr( "vkGetSwapchainStatusKHR"));
   53154       vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT(device ? device.getProcAddr( "vkGetValidationCacheDataEXT") : instance.getProcAddr( "vkGetValidationCacheDataEXT"));
   53155       vkImportFenceFdKHR = PFN_vkImportFenceFdKHR(device ? device.getProcAddr( "vkImportFenceFdKHR") : instance.getProcAddr( "vkImportFenceFdKHR"));
   53156 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53157       vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR(device ? device.getProcAddr( "vkImportFenceWin32HandleKHR") : instance.getProcAddr( "vkImportFenceWin32HandleKHR"));
   53158 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53159       vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR(device ? device.getProcAddr( "vkImportSemaphoreFdKHR") : instance.getProcAddr( "vkImportSemaphoreFdKHR"));
   53160 #ifdef VK_USE_PLATFORM_WIN32_KHR
   53161       vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR(device ? device.getProcAddr( "vkImportSemaphoreWin32HandleKHR") : instance.getProcAddr( "vkImportSemaphoreWin32HandleKHR"));
   53162 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
   53163       vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges(device ? device.getProcAddr( "vkInvalidateMappedMemoryRanges") : instance.getProcAddr( "vkInvalidateMappedMemoryRanges"));
   53164       vkMapMemory = PFN_vkMapMemory(device ? device.getProcAddr( "vkMapMemory") : instance.getProcAddr( "vkMapMemory"));
   53165       vkMergePipelineCaches = PFN_vkMergePipelineCaches(device ? device.getProcAddr( "vkMergePipelineCaches") : instance.getProcAddr( "vkMergePipelineCaches"));
   53166       vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT(device ? device.getProcAddr( "vkMergeValidationCachesEXT") : instance.getProcAddr( "vkMergeValidationCachesEXT"));
   53167       vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueBeginDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueBeginDebugUtilsLabelEXT"));
   53168       vkQueueBindSparse = PFN_vkQueueBindSparse(device ? device.getProcAddr( "vkQueueBindSparse") : instance.getProcAddr( "vkQueueBindSparse"));
   53169       vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueEndDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueEndDebugUtilsLabelEXT"));
   53170       vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueInsertDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueInsertDebugUtilsLabelEXT"));
   53171       vkQueuePresentKHR = PFN_vkQueuePresentKHR(device ? device.getProcAddr( "vkQueuePresentKHR") : instance.getProcAddr( "vkQueuePresentKHR"));
   53172       vkQueueSubmit = PFN_vkQueueSubmit(device ? device.getProcAddr( "vkQueueSubmit") : instance.getProcAddr( "vkQueueSubmit"));
   53173       vkQueueWaitIdle = PFN_vkQueueWaitIdle(device ? device.getProcAddr( "vkQueueWaitIdle") : instance.getProcAddr( "vkQueueWaitIdle"));
   53174       vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT(device ? device.getProcAddr( "vkRegisterDeviceEventEXT") : instance.getProcAddr( "vkRegisterDeviceEventEXT"));
   53175       vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT(device ? device.getProcAddr( "vkRegisterDisplayEventEXT") : instance.getProcAddr( "vkRegisterDisplayEventEXT"));
   53176       vkRegisterObjectsNVX = PFN_vkRegisterObjectsNVX(device ? device.getProcAddr( "vkRegisterObjectsNVX") : instance.getProcAddr( "vkRegisterObjectsNVX"));
   53177       vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT(instance.getProcAddr( "vkReleaseDisplayEXT"));
   53178       vkResetCommandBuffer = PFN_vkResetCommandBuffer(device ? device.getProcAddr( "vkResetCommandBuffer") : instance.getProcAddr( "vkResetCommandBuffer"));
   53179       vkResetCommandPool = PFN_vkResetCommandPool(device ? device.getProcAddr( "vkResetCommandPool") : instance.getProcAddr( "vkResetCommandPool"));
   53180       vkResetDescriptorPool = PFN_vkResetDescriptorPool(device ? device.getProcAddr( "vkResetDescriptorPool") : instance.getProcAddr( "vkResetDescriptorPool"));
   53181       vkResetEvent = PFN_vkResetEvent(device ? device.getProcAddr( "vkResetEvent") : instance.getProcAddr( "vkResetEvent"));
   53182       vkResetFences = PFN_vkResetFences(device ? device.getProcAddr( "vkResetFences") : instance.getProcAddr( "vkResetFences"));
   53183       vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT(device ? device.getProcAddr( "vkSetDebugUtilsObjectNameEXT") : instance.getProcAddr( "vkSetDebugUtilsObjectNameEXT"));
   53184       vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT(device ? device.getProcAddr( "vkSetDebugUtilsObjectTagEXT") : instance.getProcAddr( "vkSetDebugUtilsObjectTagEXT"));
   53185       vkSetEvent = PFN_vkSetEvent(device ? device.getProcAddr( "vkSetEvent") : instance.getProcAddr( "vkSetEvent"));
   53186       vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT(device ? device.getProcAddr( "vkSetHdrMetadataEXT") : instance.getProcAddr( "vkSetHdrMetadataEXT"));
   53187       vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT(instance.getProcAddr( "vkSubmitDebugUtilsMessageEXT"));
   53188       vkTrimCommandPool = PFN_vkTrimCommandPool(device ? device.getProcAddr( "vkTrimCommandPool") : instance.getProcAddr( "vkTrimCommandPool"));
   53189       vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR(device ? device.getProcAddr( "vkTrimCommandPoolKHR") : instance.getProcAddr( "vkTrimCommandPoolKHR"));
   53190       vkUnmapMemory = PFN_vkUnmapMemory(device ? device.getProcAddr( "vkUnmapMemory") : instance.getProcAddr( "vkUnmapMemory"));
   53191       vkUnregisterObjectsNVX = PFN_vkUnregisterObjectsNVX(device ? device.getProcAddr( "vkUnregisterObjectsNVX") : instance.getProcAddr( "vkUnregisterObjectsNVX"));
   53192       vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate(device ? device.getProcAddr( "vkUpdateDescriptorSetWithTemplate") : instance.getProcAddr( "vkUpdateDescriptorSetWithTemplate"));
   53193       vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR(device ? device.getProcAddr( "vkUpdateDescriptorSetWithTemplateKHR") : instance.getProcAddr( "vkUpdateDescriptorSetWithTemplateKHR"));
   53194       vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets(device ? device.getProcAddr( "vkUpdateDescriptorSets") : instance.getProcAddr( "vkUpdateDescriptorSets"));
   53195       vkWaitForFences = PFN_vkWaitForFences(device ? device.getProcAddr( "vkWaitForFences") : instance.getProcAddr( "vkWaitForFences"));
   53196     }
   53197   };
   53198 } // namespace VULKAN_HPP_NAMESPACE
   53199 
   53200 #endif
   53201